| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C] Длинная арифметика на строках |
| Автор: _mike_ 14.11.2006, 15:12 |
| Быстро нужна программа, делающая следующее: 1. Прочитать файл "настроек" nastr.txt 2. Взять из него имя рабочего файла f001.txt 3. Прочитать из файла f001.txt первую пару строк 4. Добавляет в начало первой строки цифру m 5. Добавляет в начало второй строки цифру n 6. Перемножает строки как 2 длинных числа , с сохранением всех значащих цифр 7. Сравнивает последние k знаков результата со строкой, объявленной в # define 8. Если не совпадает, то Continue, следующая пара строк из f001.txt. 9. Если совпадает, то записывает пару-множители в файл f002.txt, как 2 строки. Берёт следующую пару строк из f001.txt. 10. Сохраняет все файлы, выгружает их из памяти. Я совсем новичок, начитался всякого (BigNum etc.), в голове полная беда. Задача конкретная и достаточно срочная. К Кнуту, plz, не посылать - в наличии, как и Прата и др., по мелочи... |
| Автор: Dov 15.11.2006, 03:22 |
| Оно и видно. _mike_, выкладывай: 1. содержимое nastr.txt 2. содержимое f001.txt 3. содержимое строки, объявленной в #define 4. что ты называешь длинными числами |
| Автор: _mike_ 15.11.2006, 12:09 | ||||||
| Последний вопрос должен бы быть первым... Например. До первого прохода цикла: nastr.txt:
f001.txt:
#define Ref_String = [471] Работа внешнего цикла: перемножаем строки (как двузначные числа) m1 и n1, где m - от 0 до 9 сравниваем с 71 из Ref_String записываем в f002.txt только те пары чисел (строк), которые дают результат, совпадающий с "71" и только в том случае, если такой пары ещё нет. Работа внутреннего цикла: То же, что и во внешнем, но меняем n Смысл: попарно перемножить все двузначные числа, заканчивающиеся на 1 и 1, и записать (без повторов, по возможности) в файл f002.txt только те пары, произведение которых имеет 2 младших разряда равным двум младшим разрядам Ref_String. Сделать то же самое со второй парой строк: 3 и 7 ... По окончании файла f001.txt всё сохранить и выгрузить из памяти Файл f002.txt после полного прохода цикла:
Собственно, содержание файла f001.txt - результат "нулевого прохода" цикла с k=1 Работать должно с числами любой разрядности. |
| Автор: Dov 15.11.2006, 16:57 | ||||
Короче, если файл nastr.txt выглядит так
|
| Автор: _mike_ 15.11.2006, 17:18 |
| 2 Dov Большое спасибо. Но пропадать не обещаю. |
| Автор: _mike_ 16.11.2006, 15:02 | ||||
| Мне кажется, что программа работает только с двузначными числами? И, соответственно, при k>3 теряет смысл.
Мне, конечно, не составит труда дописать
И что будет, когда m и n станут больше 2^16. |
| Автор: Dov 16.11.2006, 17:24 |
| _mike_, но это же только демонстрационный пример, который показывает тебе, как нужно работать с теми данными, которые ты выложил выше. Я не думаю, что для тебя проблема вместо, скажем, числа 90 завести соответствующую переменную или организовать какой-нибудь дополнительный цикл. |
| Автор: _mike_ 24.11.2006, 15:26 | ||||
Не работает
Пишет, не могу открыть файл ... (все). А потом
|
| Автор: Dov 25.11.2006, 15:17 |
_mike_, зачем ты ';' после if`ов поставил. Убери. И задавай конкретные вопросы. |
| Автор: _mike_ 27.11.2006, 12:22 | ||
| Убрал. Всё равно пишет
|