Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Pascal pro ukončeeni stiskněte (znak)

Zdravíčko,

Mám zde problém ve Free Pascalu. Potřebuji nahrávat cyklem čísla a po zmáčknutí třeba k, se cyklus ukončí a vypíše nejmenší číslo.

program nejmensi_cislo;

uses CRT;

var zadane, nejmensi: integer;

begin
  nejmensi:=2;
  clrscr;
  writeln('Zadejte cislo. Pro ukonceni a zobrazeni stisknete k :');
  readln(zadane);
  repeat
    begin
      writeln('Zadej cislo: ');
      readln(zadane);
      if zadane < nejmensi then nejmensi:=zadane;
    end;
  until zadane = 'k';
  clrscr;
  writeln('Nejmensi cislo je ' ,nejmensi, '.');
  readln;
end.

Tento kód mě nefunguje píše mě to chybu datového chybu. Kdysi jsem to dělal ale už si napamatuji jak se to dělá. Díky

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Příkaz readln načítá znak (char), v podmínce porovnáváš jestli je menší než proměnná nejmensi. Nemůž…
host 26.05.2013 21:45
host
a navíc správně neincializoval proměnnou "nejmensi", což je prasárna a potenciální problém jako pras…
touchwood 26.05.2013 23:10
touchwood
Ne pretypovat ale skonvertovat. to je trochu rozdiel ;)
MM.. 26.05.2013 23:24
MM..
Máš pravdu, přetypování by z "k" udělalo číslo rovné jeho ASCII hodnotě. :-) edit: za to může host!… poslední
touchwood 27.05.2013 08:09
touchwood

a navíc správně neincializoval proměnnou "nejmensi", což je prasárna a potenciální problém jako prase.

např.

nejmensi := maxint;

edit: readln načítá proměnnou takovou, jakou mu napíšeš. Tj. pokud dáš readln (integer), bude ošetřovat vstup na integer a při zadání "k" samozřejmě havaruje. Takže načítat string a ten je nutno přetypovat.

Zpět do poradny Odpovědět na původní otázku Nahoru