Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизДлинное деление Найти похожие ветки
← →
Nelud (2004-01-16 18:20) [0]Нужна безглючная реализация.
← →
Тимохов (2004-01-16 18:25) [1]Что значит длинное?
ЦЕлочисленное, с правующей точкой?
Подробнее бы...
← →
Тимохов (2004-01-16 18:25) [2]Что значит длинное?
ЦЕлочисленное, с правующей точкой?
Подробнее бы...
← →
Digitman (2004-01-16 18:37) [3]
> безглючная
мы тут, конечно, ночью сегодня спать не будем : что же за "глюки"-то там у тебя приключились - все об этом будем думать-гадать ... а ты спи спокойно : утром придешь и увидишь кучу вариантов по преодолению хрен знает каких глюков ... выбирай не хочу ... на любой вкус
← →
Agent13 (2004-01-16 18:51) [4]А длинное деление - это как - столбиком что ли?
← →
Nelud (2004-01-17 09:42) [5]Длинное = столбиком, целых чисел. Извините что сразу не уточнил мне это казалось понятным(у нас так говорят "длинная арифметика", "длинный корень"...)
2Digitman © (16.01.04 18:37) [3]
Я НЕ ПРОШУ ИСКАТЬ МОИ ОШИБКИ!
Я прошу просто кинуть исходник! Я сам с ним разберусь!
Мой - сбоит, но я разберусь с ним сам.
← →
PaRL (2004-01-17 10:15) [6]Я вообще не понял... Ты хочешь увидеть на экране столбик чтоли? Или ты хочешь чтобы компьютер считал так же, как шестиклассник в школе?
← →
Nelud (2004-01-17 10:53) [7]2PaRL ©
Да, как шестиклассник только без ошибок=). Хотя если кто знает способ лучше чем столбик то милости прошу.
Мне пойдет любой исходнник - выводящий или не выводящий столбик, считающий(делящий!) как 1,2,3,4,5,6,7,8,9,10,11 классник.
Главное, что бы делил на цело числа порядка 10^1000.
← →
Nelud (2004-01-17 13:28) [8]По просьбам трудяшихся=)
Program long_division;
Var int1,int2,result:array[0..100] of integer;
i,j,l1,l2,k,l10:integer;
flag:boolean;
Function Comparation:boolean;
{true mean int1>int2}
{!!! l1>=l2 !!!}
Var i,j:integer;
Begin
i:=l1;
j:=l2;
while (int1[i]=int2[j]) and (j>1) do begin
i:=i-1;
j:=j-1;
end;
Comparation :=(int1[i]>int2[j]);
if (i=1) and (j=1) and (l1=l2) then comparation:=true;
end;
Procedure Reduction1;
Var i,j:integer;
Begin
j:=l2;
for i:=l1 downto l1-l2+1 do begin
int1[i]:=int1[i]-int2[j];
j:=j-1;
end;
end;
Procedure Reduction2;
Var i,j:integer;
Begin
i:=l1-1;
for j:=l2 downto 1 do begin
int1[i]:=int1[i]-int2[j];
i:=i-1;
end;
end;
Procedure normalization;
Var i,k:integer;
Begin
k:=l1-l2-5;
if k<1 then k:=1;
for I:=l1 downto k do
if int1[i]<0 then
begin
int1[i]:=int1[i]+10;
int1[i+1]:=int1[i+1]-1;
end;
end;
Procedure improvement;
Begin
if int1[l1]=0 then flag:=true;
while int1[l1]=0 do l1:=l1-1;
end;
begin
assign(input,"input.txt");
reset(input);
Readln(l1);
l10:=l1;
for i:=l1 downto 1 do read(int1[i]); readln;
Readln(l2);
for i:=l2 downto 1 do read(int2[i]); readln;
{ writeln(Comparation);}
fillchar(result,sizeof(result),0);
k:=1;
while (l1>=l2) do begin
flag:=false;
while (not comparation) and (l1>l2) do
begin
result[k]:=result[k]+1;
reduction2;
normalization;
improvement;
if flag then break;
end;
flag:=false;
while comparation and (l1>=l2) do
begin
result[k]:=result[k]+1;
reduction1;
normalization;
improvement;
if flag then break;
end;
k:=k+1;
if (l1=l2) and not comparation then break;
end;
for i:=1 to k-1 do
write(result[i], " ");
writeln;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.015 c