![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
![]() Маленький Принц ![]() Группа: Почетный форумчанин Сообщений: 2279 Регистрация: 5.1.2007 Вставить ник Цитата Из: Украина, Киев Пользователь №: 3475 Страна: ![]() Пол: ![]() ![]() |
Люди, я туплю страшно. Помогите :?
Вообщем задача: Умножить два длинных числа (длинная арифметика). Дано: Два файла: 1й: 1я строка- длинна 1го числа;2я строка- длинная 2го числа; 3я строка- 1е число; 4я строка- 2е число. 2й: в нем результат умножения. Числа заносятся в массивы. перемножаются, и со сдвигом записываются в двумерный массив. Числа с двумерного массива сумируются, и результат заносится в обычный массив. (Вообщем как в столбик, через массивы). Воть, если что несовсем понятно - спрашивайте. А процедурка нужна поскорее. Ибо последнюю лабу могу завалить :?: :idea: ЗЫ в инэте смотрел, то что нужно не нашел. -------------------- Бу!
![]() |
|
|
![]() |
![]()
Сообщение
#2
|
|
![]() Маленький Принц ![]() Группа: Почетный форумчанин Сообщений: 2279 Регистрация: 5.1.2007 Вставить ник Цитата Из: Украина, Киев Пользователь №: 3475 Страна: ![]() Пол: ![]() ![]() |
(FalseNegative) или вам ещё перенос нужен? т.е.
19 19 -- 38 а не 19 19 -- 2(18)? тады так: program arraysum;
var tosum: array [1...100,1..100] of Integer; //Как вариант, - array [] of 0..9; actualwidth,actualheight,resultwidth,cnt,carry: Integer; aresult: array [1..100] of Integer; go_on:boolean; begin //читаем исходный массив. for i := actualwidth downto 1 do begin aresult[i] := 0; //ВАЖНО! В Паскале нет автоинициализации! for j := 1 to actualheight do begin aresult[i]:=aresult[i]+tosum[i,j]; end; end; go_on:=true;// или наоборот? cnt:=actualwidth; //actualwidth и actualheight одинаковые, поэтому безразници carry:=0; while go_on do begin aresult[cnt]:=aresult[cnt]+carry; carry:=aresult[cnt] div 10; aresult[cnt]:=aresult[cnt] mod 10; cnt:=cnt-1; go_on:=NOT ((carry=0) AND (aresult[cnt]=0));//Тьху, надо NOT исправил. end; resultwidth:=cnt-1;// это не нужно //выводим результатъ end. Все отлично, только немного подправить нужно было. Красным дописал что нужно и убрал что нет)[/color][color=#444444] -------------------- Бу!
![]() |
|
|
![]() ![]() |
![]() |
Текстовая версия Архив форума | Сейчас: 28.7.2025, 1:16 |
![]() |
![]() |