Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Длинное деление   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-93552
Mihey
2004-01-17 19:39
2004.01.29
EOutOfResources - нехватает хэндлов


3-93349
Jane
2004-01-02 18:23
2004.01.29
В DBGrid не отображается знаечние поля.


1-93505
frost
2004-01-15 13:18
2004.01.29
Нужен компонент Grid!


1-93416
Oyster
2004-01-19 12:05
2004.01.29
Курсор мигает над перерисовывающимся Image


1-93515
Looo
2004-01-18 20:00
2004.01.29
Повторяющиеся действия