Вы заметили, что количество сложений в цикле на единицу меньше размера массива? – одно место в массиве припасено на случай переноса из старшего разряда. Результат работы программы на моем компьютере таков.
Первое слагаемое (499 цифр):
8803447475526346381115774817716923675204013515325625368435081217045581659031800071999794366
1182651825637587203786736601358393989531415129060249427882941568716183991696120939861150054
6931200667866376204115538852965830795649105020542397666292186509678053905826675950787561760
5869708358318344949299824242208000929286578540423001609560508264356930728328745107168941254
6971095113657279669411494318090578430589776576476782988688149478003857089789749459805075709
20442289778748724626014927619547782761770630
Второе слагаемое (499 цифр):
4301056320813339259127743021691072439999265735917637003180047595481028679918094988721008241
5896167531551745866707619828471298816918833129959986427866428281363411295696463579032521755
7777821776772170919033280201619190732499393489224796857416710264662385957326645736202490241
1316796587449679809153393673306802289884085958345033422404931451426067305519212005730606726
2742584874919295598665812780867323280259752302809107360806816867592608963920797222278187770
61923128832709593717254099272079488419978116
Сумма (500 цифр):
1310450379633968564024351783940799611520327925124326237161512881252661033894989506072080260
7707881935718933307049435642982969280645024825902023585574936985007959528739258451889367181
0470902244463854712314881905458502152814849850976719452370889677434043986315332168699005200
1718650494576802475845321791551480321917066449876803503196543971578299803384795711289954798
0971367998857657526807730709895790171084952887928589034949496634559646605371054668208326347
982365418611458318343269026891627271181748746
Результат сложения нетрудно проверить в уме, – здесь калькулятор не только излишен, но и бесполезен.
• Встроенные в язык типы данных – не единственный способ представления чисел. Для сверхбольших чисел годятся массивы чисел или символов. Действия с такими огромными числами – ввод, вывод, вычисления – требуют специальных процедур.
• Встроенная процедура FillChar заполняет нужным значением массив или переменную любого типа.
• Файловые переменные Input (для ввода с клавиатуры) и Output (для вывода на экран) встроены в язык. Они не требуют ни объявления, ни открытия, ни закрытия, и могут передаваться в качестве параметров процедур, как и другие файловые переменные.
А) Постройте сверхбольшие числа на основе строковых переменных (количество цифр – не более 255).
Б) Напишите процедуру для вычитания сверхбольших чисел. Или слабо? Учтите, что разность может быть и отрицательной!
В) Автоматически объявленные файловые переменные Input и Output по умолчанию связаны соответственно с клавиатурой и экраном. Но их можно связать и с дисковыми файлами, например:
Assign(Input, 'Data.In'); Reset(Input);
Assign(Output, 'Data.Out'); Rewrite(Output);
Readln(S); { Чтение строки из Data.In }
Writeln(S); { Запись строки в Data.Out }
Close(Input); Close(Output);
Воспользуйтесь этим приемом для вывода сверхбольшого числа в текстовый файл. Переделайте процедуру WriteBigNumber, устранив первый параметр,