Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
8-93583
gagarin
2003-09-26 05:16
2004.01.29
midi


1-93483
baataars
2004-01-15 13:58
2004.01.29
OpenDialog не встает на DefaultExt если есть фильтр


3-93342
dimablind
2004-01-03 19:10
2004.01.29
locate


1-93445
вася
2004-01-16 12:20
2004.01.29
шифрование


3-93388
Grihan
2003-12-30 15:06
2004.01.29
InterBase. Ошибка ibtTable.CreateTable;





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский