Как и чем сделать перемножение во множестве текстовых файлов считывая значение перемножаемых чисел по условию и перезаписать результат вместо второго считываемого числа, не трогая остальной текст? - вопрос №1407661

Есть текстовые файлы(несколько десятков), в них есть по сотне записей с группами, в группах расписаны шансы на выпадение самой группы, а так же внутри каждой из групп есть индивидуальные шансы на каждый итем входящий в эту группу, нужно привести множество текстовых файлов, содержащих такие строки ко второму виду, где индивидуально раписаны шансы каждого итема. И этот шанс получен перемножением индивидуального шанса этого итема на шанс группы в которой этот итем находится. Не трогая остальной текст, содержащийся в файлах. Строки с групповыми шансами можно не удалять(если сделать это после, создав единую группу с шансом 100% на каждый список итемов).
Оригинал:
некий текст
<group chance=«aa»>
<текст итема1" chance=«bb» />
</group>
<group chance=«cc»>
<текст итема2 " chance=«dd» />
<текст итема3 " chance=«ee» />
<текст итема4 " chance=«ff» />
<текст итема5 " chance=«gg» />
</group>
<group chance=«hh»>
<текст итема6 " chance=«ii» />
<текст итема7 " chance=«jj» />
</group>
некий текст
Пример:
Сделать из записи вида:
group 1 =60%
item 1 = 20%
item 2 = 80%
group 2 = 50%
item 3 = 10%
item 4 = 30%
item 5 = 20%
item 6 = 2%
group 3 = 20%
item 7 = 90%
item 8 = 80%
Такую запись:
item1 = 12%
item2 = 48%
item3 = 5%
item4 = 15%
item5 = 10%
item6 = 1%
item7 = 18%
item8 = 16%
Результат:
некий текст
<group chance=«aa»>
<текст итема1 " chance=«aa*bb» />
</group>
<group chance=«cc»>
<текст итема2 " chance=«cc*dd» />
<текст итема3 " chance=«cc*ee» />
<текст итема4 " chance=«cc*ff» />
<текст итема5 " chance=«cc*gg» />
</group>
<group chance=«hh»>
<текст итема6 " chance=«hh*ii» />
<текст итема7 " chance=«hh*jj» />
</group>
некий текст
А если можно — такой результат:
некий текст
<group chance=«100%»>
<текст итема1 " chance=«aa*bb» />
<текст итема2 " chance=«cc*dd» />
<текст итема3 " chance=«cc*ee» />
<текст итема4 " chance=«cc*ff» />
<текст итема5 " chance=«cc*gg» />
<текст итема6 " chance=«hh*ii» />
<текст итема7 " chance=«hh*jj» />
</group>
некий текст
При этом aa*bb должно быть непосредственно результатом перемножения.
Примерный алгоритм, возможно совершенно не верный, просто то, что мне пришло в голову..
0) переменная «групшанс» по умолчанию =1
1)читаю текст, нахожу фразу group chance, считываю всё, что после =" и до второй " в переменную «групшанс»
1.5)умножаю переменную «групшанс» на 0.01(так как надо значение в процентах перевести в значение в долях то есть 100% = 1, 50%=0.5, 0.5%=0.005 и тд)
2)далее умножаю встречающееся мне число, расположенное после " chance=" и до второй кавычки " на переменную «групшанс» и перезаписываю полученный результат вместо исходного числа
3)далее проверяю, нет ли строки group chance, если есть, то возвращаюсь к пункту 1), если нет, то к пункту 2), если же встречаю фразу </group> то записываю в переменную «групшанс» число 1

13.03.15
1 ответ

Ответы

Это можно сделать программой, написаной на практически любом языке программирования, например Delphi.
03.04.15

Глеб Черняк

от 55 p.
Сейчас на сайте
Читать ответы

Олег Николаевич

от 50 p.
Читать ответы

Arturk16

от 50 p.
Эксперт месяца
Читать ответы
Посмотреть всех экспертов из раздела Технологии
0 ответов
13.04.24
Вопрос задан анонимно
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store