DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦11bf57845⟧ TextFile

    Length: 2176 (0x880)
    Types: TextFile
    Names: »LONGADD.PAS«

Derivation

└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer
    └─ ⟦this⟧ »LONGADD.PAS« 

TextFile

        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»