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

Вниз

Большие числа   Найти похожие ветки 

 
Кир ©   (2006-04-02 15:29) [0]

Просьба помочь в написании проги...
Точнее, в её создании.
Надо в консольном приложении Делфы создать большое число, и, допустим, перемножить два таких числа.
Нужен лишь метод создания, остальное - сами разберёмся...


 
Belorus ©   (2006-04-02 15:32) [1]

Я делал такие финты с помощью массивов. Создаёшь массив на 1000 элементов типа байт. И с ним уже работаешь. Каждая ячейка - цифра.

Метод ооочень межденный но работает.
Можно со строками.


 
Кир ©   (2006-04-02 15:34) [2]

Со строками надо..=)
а можно сорс?))
Благодарен буду...


 
Кир ©   (2006-04-02 15:59) [3]

Никто не поможет?=(


 
Belorus ©   (2006-04-02 16:01) [4]

Ой простят меня модераторы.

Вот кусочек кода который скорее всего неправильный и даже не скомпилится.

Юнит для умножения остался в лицее, а это старый без умножения.

var Chislo1,Chislo2,s: array[0..256] of byte;
   S1,S2           : String;
   Counter,Maxlen,c2    : Word;
function FindStart(l : array of byte) : integer;
var cc : integer;
begin
FindStart:=255;
 For cc:=0 to 256 do
 begin
   If l[cc]<>0 then
   begin
     FindStart:=cc;
     Break;
   end;
 end;
end;

Procedure Prepare;
begin
 For Counter:=0 to 256 do
 begin
   Chislo1[Counter]:=0;
   Chislo2[Counter]:=0;
 end;
end;

procedure Slozhenie(ch1,ch2 : array of byte);
var Ost,Zap : Byte;
begin
Counter:=1;
Zap:=0;
Ost:=0;
 While Counter <= MaxLen+1 do
 begin
   Ost:=(ch1[256-Counter]+ch2[256-Counter]+zap)mod 10;
   Zap:=(ch1[256-Counter]+ch2[256-Counter]+zap)div 10;
   s[256-Counter]:=ost;
   Inc(Counter);
 end;
end;

procedure Vychitanie(ch1,ch2 : array of byte);
var Ost,Zap : Byte;
begin
Counter:=1;
Zap:=0;
Ost:=0;
 While Counter <= MaxLen+1 do
 begin
   Ost:=(ch1[256-Counter]-ch2[256-Counter]-zap)mod 10;
   Zap:=(ch1[256-Counter]-ch2[256-Counter]-zap)div 10;
   s[256-Counter]:=ost;
   Inc(Counter);
 end;
end;
procedure Umnozhenie(ch1,ch2 : array of byte);
var Ost,Zap : Byte;
   TAR    : array[0..256]of byte;
begin
Counter:=1;
Zap:=0;
Ost:=0;
c2:=0;
 While c2< 256-FindStart(ch2) do
 begin
 While Counter <= MaxLen+1 do
 begin
   Ost:=(ch1[256-Counter]*ch2[c2]+zap)mod 10;
   Zap:=(ch1[256-Counter]*ch2[c2]+zap)div 10;
   TAR[256-Counter]:=ost;
   Inc(Counter);
 end;
 Inc(c2);
 end;
end;

begin
Prepare;
readln(S1);
readln(S2);

Counter:=1;
If Length(S1)>Length(s2) then MaxLen:=Length(s1) else MaxLen:=Length(s2);
While Counter <= Length(s1) do
begin
 Chislo1[256-Counter]:=Ord(S1[Length(s1)-Counter+1])-48;

 Inc(Counter);
end;
Counter:=1;
While Counter <= Length(s2) do
begin
 Chislo2[256-Counter]:=Ord(S2[Length(s2)-Counter+1])-48;
 Inc(Counter);
end;

{ Slozhenie(chislo1,chislo2);}
Vychitanie(chislo1,chislo2);

For Counter:=FindStart(s) to 255 do
begin

write(s[Counter]);
end;
readln;

И не дай бог кому нибудь начать обсирать этот огрызок кода.


 
Кир ©   (2006-04-02 16:09) [5]

Шпасибо...
Интересно, сработает ли..%)
А если будут недовольны - то милости прошу на мыло мне нормальный, на ваш взгляд, код... мне экзамен сдать надоооооооооооооо...


 
Anatoly Podgoretsky ©   (2006-04-02 16:16) [6]

Belorus ©   (02.04.06 16:01) [4]
У нас свободный форум, поэтому если будут желающие, то это из право.



Страницы: 1 вся ветка

Текущий архив: 2006.04.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.053 c
3-1140516501
dreamse
2006-02-21 13:08
2006.04.16
как выбрать Select с таблицой DataTime ?


8-1131604070
plotn
2005-11-10 09:27
2006.04.16
Как взять информацию из тэгов ogg файлов?


2-1143961247
Ded22
2006-04-02 11:00
2006.04.16
как обновить DBLookupCombobox ?


6-1136026685
ezorcist
2005-12-31 13:58
2006.04.16
Настлоение строк


15-1143444399
zeff
2006-03-27 11:26
2006.04.16
Сохранить иконку с новыми параметрами