|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2176 (0x880)
Types: TextFile
Names: »LONGADD.PAS«
└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer
└─⟦this⟧ »LONGADD.PAS«
PROGRAM longadd;
CONST
maxlaengde = 12;
TYPE
cifre = 0 .. 9;
vektor = ARRAY(.0 .. maxlaengde.) OF cifre;
maxstreng = STRING(.maxlaengde.);
VAR
streng1, streng2 : maxstreng;
v1, v2, v3 : vektor;
i, j, sum, mente : INTEGER;
BEGIN
WRITE(CLRHOM, 'Tast 1. tal (max ',maxlaengde, ' cifre): ');
BUFLEN := maxlaengde;
READLN(streng1);
WRITE('Tast 2. tal (max ',maxlaengde, ' cifre): ');
BUFLEN := maxlaengde;
READLN(streng2);
WRITELN;
WRITELN(streng1:maxlaengde +10);
FOR i := 1 TO maxlaengde + 7 - LEN(streng2) DO
WRITE(' ');
WRITELN(' + ', streng2);
WRITE(' ');
FOR i := 1 TO maxlaengde DO
WRITE('-');
WRITELN;
FOR i := LEN(streng1) + 1 TO maxlaengde DO (* Fyld op med 0 *)
streng1 := '0' + streng1;
FOR i := LEN(streng2) + 1 TO maxlaengde DO
streng2 := '0' + streng2;
FOR i := 1 TO maxlaengde DO (* Tallene overføres til v1 og v2 *)
v1(.i.) := ORD(streng1(.i.)) - ORD('0');
FOR i := 1 TO maxlaengde DO
v2(.i.) := ORD(streng2(.i.)) - ORD('0');
mente := 0;
FOR i := maxlaengde DOWNTO 1 DO (* Tallene adderes *)
BEGIN
sum := v1(.i.) + v2(.i.) + mente;
v3(.i.) := sum MOD 10;
mente := sum DIV 10;
END;
v3(.0.) := mente;
FOR i := 1 TO 9 DO
WRITE(' ');
j := 0;
WHILE (v3(.j.) = 0) AND (j < maxlaengde) DO
BEGIN
WRITE(' ');
j := j + 1;
END;
FOR i := j TO maxlaengde DO
WRITE(v3(.i.));
WRITELN;
END.
«eof»