- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
TYPE
Numbers=RECORD
a:ARRAY 1000 OF INTEGER;
N:INTEGER;
END;
........
PROCEDURE Summ(OUT res:Numbers;IN a,b:Numbers); (*Проверена*)
VAR
max,i,sum:INTEGER;
BEGIN (*Суммирование*)
IF a.N>b.N THEN
max:=a.N;
ELSE
max:=b.N;
END;
i:=0;
sum:=0;
WHILE i<=max DO
IF i<=a.N THEN
sum:=sum+a.a[i];
END;
IF i<=b.N THEN
sum:=sum+b.a[i];
END;
res.a[i]:=sum MOD 10;
sum:=sum DIV 10;
i:=i+1;
END;
IF sum>0 THEN
res.N:=max+1;
res.a[max+1]:=sum;
ELSE
res.N:=max;
END;
END Summ;
Кусок из написанной одним энтузиастом-программером реализации длинной арифметики (комментарии сохранены)
4 байта под каждую десятичную цифру. Много? Зато все понятно, как в школе ;)
шесть + семь = три, единица на ум пошла...
P.S. язык оберон - наследник паскаля
guest 11.06.2009 00:03 # 0
guest 11.06.2009 08:35 # 0
guest 11.06.2009 09:23 # −2
guest 11.06.2009 09:47 # 0
Use gmplib.org, Luke.
guest 16.06.2009 17:45 # 0
Oleg_quadro 21.08.2009 15:15 # 0
guest 24.09.2009 16:04 # 0
guest 24.12.2009 20:37 # 0