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

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 premenna nejmensi sa inicializuje na prvu polozku, k tomu sa urobi nejaka ina premenna ze ci vobec…
MM.. 26.05.2013 23:29
MM..
samozřejmě je třeba otestovat, zda bylo zadáno alespoň jedno číslo, ale to je pro takové prográmky u…
touchwood 27.05.2013 08:04
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.

A premenna nejmensi sa inicializuje na prvu polozku, k tomu sa urobi nejaka ina premenna ze ci vobec uz bola zadana nejaka polozka.
Aby ked zadas rovno 'k' nevypisal program gebuzinu typu nejmensi zadane cislo bolo 4234523524312 ale aby vypisal ze si nezaadl ziadne cislo. Navyse tam nema osetrene to ze ci hned nezadal k. Cely ten program je nezmysel. Ano ludia vobec nerozmyslaju len cosi lepia bez mozgu a nezvladaju ani taketo triviality, preto dnesny SW je tak na p* :)

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