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říkaz readln načítá znak (char), v podmínce porovnáváš jestli je menší než proměnná nejmensi. Nemůžeš porovnávat znak s číslem. Je nutno nejdřív proměnnou přetypovat.
a navíc správně neincializoval proměnnou "nejmensi", což je prasárna a potenciální problém jako prase.
např.
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.
Ne pretypovat ale skonvertovat. to je trochu rozdiel ;)
Máš pravdu, přetypování by z "k" udělalo číslo rovné jeho ASCII hodnotě.
edit: za to může host! Já to jen opsal!