Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2015, 17:19   #1
Umora220w
Новичок
Джуниор
 
Регистрация: 14.03.2015
Сообщений: 1
По умолчанию XML файл в AkelPad - задание от препода, помогите пожалуйста

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

Есть текстовые файлы(несколько десятков), в них есть по сотне записей с группами, в группах расписаны шансы на выпадение самой группы, а так же внутри каждой из групп есть индивидуальные шансы на каждый итем входящий в эту группу, нужно привести множество текстовых файлов, содержащих такие строки ко второму виду, где индивидуально раписаны шансы каждого итема. И этот шанс получен перемножением индивидуального шанса этого итема на шанс группы в которой этот итем находится. Не трогая остальной текст, содержащийся в файлах. Строки с групповыми шансами можно не удалять(если сделать это после, создав единую группу с шансом 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
Umora220w вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите пожалуйста ...как внести изменения в существующий XML файл в Delphi 7 XMLDocument Igor_kud Общие вопросы Delphi 2 05.10.2013 16:07
Атака ПРЕПОДА! Помогите студенту! wowka_khb Помощь студентам 1 02.04.2009 15:46
Помогите исправить прогу так чтобы препода удовлетворяла))) 812 Помощь студентам 3 25.05.2008 12:34
пожалуйста помогите сделать задание 2 Banko Общие вопросы C/C++ 17 27.01.2007 16:38