pascal

Programovacie jazyky, rady, poradňa...
miki11
Light Expert
Light Expert
Príspevky: 74
Registrovaný: 09 feb 2008, 13:59

pascal

Príspevok od používateľa miki11 »

Cawte ludkovia. Mam taku otazocku, ze ako v pascale sa kontroluju vstupy, teda ked mam a: integer a zadam a12 aby mi nespadol program ale aby mi mi pokracoval dalej a znova ma vyzval na vlozenie hodnoty :? Resp ze ci read , alebo readln vraca nejaku hodnotu pri uspesnom nacitani vstupu. Dik
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

1. možnosť (načítanie vstupu ako string, pokúsime sa ho previesť cez funkciu val() na integer. Ak sa podarí, code bude rovné 0, ak sa nepodarí, code bude > 0 /konkrétne pozícia kde nastala pri prevode chyba, čiže prvý nečíselný znak/):

Kód: Vybrať všetko

Var
     pom : String ;
     a, Code : Integer ;
begin
     while TRUE do begin 
          writeln('zadaj celociselne a:');
          ReadLn(pom) ;
          Val(pom, a, Code) ;
          if Code = 0 then 
               break ;
          WriteLn(a, ' nie je celociselne, zadaj znova');
     end ;


2. možnosť (cez chránený blok try-except):
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

alebo tiez takto: ;)

Kód: Vybrať všetko

uses crt;
var a:integer;
    chyba:boolean;

begin
     clrscr;

     repeat
      write('Vloz celociselnu hodnotu: ');
      {$I-} readln(a); {$I+}
      chyba:=IOresult<>0;
       if chyba then writeln('Chyba vstupu! ZNOVU!');
     until not chyba;

     writeln(a);

     readkey;


end.
miki11
Light Expert
Light Expert
Príspevky: 74
Registrovaný: 09 feb 2008, 13:59

Príspevok od používateľa miki11 »

dakujem
Napísať odpoveď