program lukutesti(input, output); {tehtävä 6.4} var kunnossa: boolean; kokluku: integer; {------------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 (merkki = ' ') and not eof do 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.