IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Умножение длинных чисел, Помогите с реализацией алгоритма..
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской
Реальное имя: Константин

Репутация: -  1  +


заранее прошу прощения, если создал тему не по разделу.. но все-таки.. вот процедура, с пом. которой я умножаю 2 длинных числа... она работает но не правильно... подскажите пожалуйста, где у меня ошибка..
отдельно каждое действие из этой процедуры(умножение на число, умножение на степень 10) работает..а вместе никак..
код:

Код
procedure TForm1.Button11Click(Sender: TObject);
var
k,j,n,l,i:integer;
rezyltat,chislo1,chislo2:string; massiv1,massiv2,massiv3,massiv4:array[1..100] of integer;
max,dlina1,dlina2,ostatok:integer;

begin
chislo1:=edit2.text;
chislo2:=edit3.Text;
ostatok:=0;
dlina1:=length(chislo1);
dlina2:=length(chislo2);
max:=dlina1+dlina2;
for i:=1 to max do massiv1[i]:=0;
for i:=1 to max do massiv2[i]:=0;
for i:=1 to max do massiv3[i]:=0;
for i:=1 to max do massiv4[i]:=0;
for i:=dlina1 downto 1 do
massiv1[max-dlina1+i]:=strtoint(chislo1[i]);
for i:=dlina2 downto 1 do
massiv2[max-dlina2+i]:=strtoint(chislo2[i]);
for i:=max downto max-dlina1 do
begin
for j:=max downto 1 do
begin
massiv3[j]:=(massiv1[j]*massiv2[i]+ostatok) mod 10;
ostatok:=(massiv1[j]*massiv2[i]+ostatok) div 10;
end;
for j:=1 to i-1 do begin
ostatok:=massiv3[1];
for k:=1 to max-1 do
massiv3[k]:=massiv3[k+1];
massiv3[max]:=ostatok;
end;
for l:=max downto 1 do
begin
massiv4[l]:=(massiv4[l]+massiv3[l]+ostatok) mod 10;
ostatok:=(massiv4[l]+massiv3[l]+ostatok) div 10;
end;
end;

for i:=1 to max do
insert(inttostr(massiv4[i]),rezyltat,i);
if rezyltat[1]='0' then delete(rezyltat,1,1);
label5.Caption:=rezyltat;

end;


Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской
Реальное имя: Константин

Репутация: -  1  +


да..прога работает.. спасибо..
но я вот только не догоняю...ведь когда мы умножаем 1-ое число на последнюю цифру второго, нам же вообще не надо передвигать.. ведь так????
а мы передвигаем на длину второго числа.. blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 22:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name