program lukutesti(input, output); {TEHTÄVÄ 6.4} type integer = longint; var kunnossa: boolean; kokluku: integer; {TURBO-PASCAL -VERSIO: RIVINLOPPU KÄSITELLÄÄN STANDARDISTA POIKETEN: NEW LINE JA CARRIAGE RETURN SAMASTETAAN OMIN KÄSIN VÄLILYÖNTIIN!!!} {------------LueInteger-----------------------------------} {Proseduuri palauttaa 1. parametrilla tiedon luvun löytymisestä, jos se on true, 2. parametri on löytynyt luku} procedure LueInteger(var OK: boolean; var arvo: integer); var merkki: char; negat: boolean; begin OK := false; negat := false; arvo := 0; if not eof then begin read(merkki); while not eof and ((merkki=' ') or (ord(merkki)=10) or {new line} (ord(merkki)=13)) do {cr} read(merkki); if merkki in ['+', '-'] then begin if merkki = '-' then negat := true; read(merkki); end; if merkki in ['0'..'9'] then begin OK := true; repeat arvo := 10*arvo + (ord(merkki)-ord('0')); read(merkki) until not(merkki in ['0'..'9']); if negat then arvo := - arvo; end; end; end; {------------------------------------------------------------} begin {TESTIPÄÄOHJELMA} writeln('LueIntegerin testaus. Luku 7 lopettaa testin.'); writeln; repeat LueInteger(kunnossa, kokluku); if kunnossa then writeln('Luku on ', kokluku:1) else begin if not eof then readln; writeln('Luku on virheellinen'); end; until (kokluku = 7) or eof; end.