kalkulačka v pascalu-prosim radu

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
ChrastyII
Začátečník
Začátečník
Uživatelský avatar
Registrován: 06. kvě 2006
Bydliště: Praha

kalkulačka v pascalu-prosim radu

Příspěvek od ChrastyII »

učím se programovat v pascalu a celý víkend si pohrávám s kalkulačkou ale ani za boha nechce fungovat :( tak bych se vás chtěl zeptat jakou tam můžu mít chybu?
program kalkulacka;
uses crt;
var a,b,n: Integer;
c,d: String;

begin
n:=0;
writeln('tohle je betaverze moji kalkulacky,pusti se za 2v teriny');
delay(2000)

writeln('napis cele realne cislo');
readln(a);
writeln('napis dalsi cislo');
readln(b);
until b<>0;
end;
if b<>0 then
begin
writeln(a,'*',b,'=',a*b);
writeln(a,'/',b,'=',a/b);
writeln(a,'+',b,'=',a+b);
writeln(a,'-',b,'=',a-b);
writeln('program se vypne kdyz stisknes klavesu');
repeat until keypressed;
end.
dík moc za rady :)
Oneeye_IO
Začátečník
Začátečník
Uživatelský avatar
Registrován: 15. srp 2005
Bydliště: Brno střed
Kontaktovat uživatele:

Příspěvek od Oneeye_IO »

V tom repeatu nic nemáš, musíš to mít repeat -> potom co se bude provádět opakovane a pak until neco ;-) Na tohle by bylo nejlepší nakrerslit si vývojový diagram, pochopil bys to hnedka ;-).
Mám takovej pocit, že tohle je tam úplně k ničemu "until b<>0;" protože to musí být spárovaný s repeatem. Ten end za tím je taky nějakej pochybnej to vyhoď. Ten konec bys mohl řešit třeba jako "if keypressed then exit" úplně na konci takže po stisku čehokoliv by se program vypl a navíc bys to mohl ošetřit elsem z předchozího "if b<>0 then" tak že kdyby bylo b 0 tak bys taky skoncil. Nevím jestli nekecám ale snad ti to pomůže :oops: .

edit: a měl bys to mít nadeklarovaný jako real když dělíš a násobíš ;-)
PC: AMD Athlon II X4 640 :: Gelid Tranquillo :: Gigabyte GA-870A-UD3 rev. 2.1 :: Kingston DDR3 4GB :: Powercolor HD5750 SCS3 :: ESI Maya 44 :: Chieftec APS-500S :: Antec Three Hundred :: W7 x64
Lenovo X61: 1,8GHz :: 2GB
Miranda IM | Opera | Gimp | Inkscape | WWFSMD? I want to believe
no_-_name
Začátečník
Začátečník
Uživatelský avatar
Registrován: 15. srp 2005
Bydliště: Mladá Boleslav
Kontaktovat uživatele:

Příspěvek od no_-_name »

repeat until keypressed na konci bejt muze, program se zacykli a ty vidis na obrazovce jen to co tam naposledy vypsal a stiskem klavesy to vypnes... muze to bejt i prazdny, mnohonasobne overeno :)
ChrastyII
Začátečník
Začátečník
Uživatelský avatar
Registrován: 06. kvě 2006
Bydliště: Praha

Příspěvek od ChrastyII »

dík za rady ale pořád to nejede :? zkuste to někdo hodit do nějakýho jinýho programu,já používám free pascal :) jo teď to vypadá takhle
program kalkulacka;
uses crt;
var a,b,n: Real;
c,d: String;

begin
n:=0;
writeln('tohle je betaverze moji kalkulacky,pusti se za 2vteriny');
delay(2000)

writeln('napis cele realne cislo');
readln(a);
writeln('napis dalsi cislo');
readln(b);
if b<>0 then
writeln(a,'*',b,'=',a*b);
writeln(a,'/',b,'=',a/b);
writeln(a,'+',b,'=',a+b);
writeln(a,'-',b,'=',a-b);
writeln('vypne kdyz stisknes klavesu');
repeat until keypressed;
end.
Zivan
Začátečník
Začátečník
Registrován: 30. čer 2005
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od Zivan »

Co to znamena nejede? Jakou chybu to pise?

A ten test na deleni nulou mas blbe, bud to musis mit cele v bloku begin - end nebo ho musis mit pred delenim (ted ti to pouze neprovede to nasobeni a spadne to pri deleni nulou).
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W
ChrastyII
Začátečník
Začátečník
Uživatelský avatar
Registrován: 06. kvě 2006
Bydliště: Praha

Příspěvek od ChrastyII »

mno chyba při kompilování...teda 2 chyby

line number 11
total error: 2
Zivan
Začátečník
Začátečník
Registrován: 30. čer 2005
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od Zivan »

Za delay() nemas strednik :-)
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W
Fifi
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: Praha, Ostrava, Brno, Bratislava

Příspěvek od Fifi »

Tady to máš trošku překopané. Myslím, že by ses měl první naučit základy a potom až používat další metody. Teďka na tom můžeš dále stavět. (opakovaní, menu, grafické rozhraní)

Kód: Vybrat vše

program kalkulacka; 
var a,b: Real;

begin 
      writeln('Zadej realne cislo:');
      readln(a);
      writeln('Zadej cislo ruzne od nuly:');
      readln(b);
      writeln(a:2:2,' * ',b:2:2,' = ',a*b:2:2);
      if b<>0 then writeln(a:2:2,' / ',b:2:2,' = ',a/b:2:2) else writeln('Chyba deleni.');
      writeln(a:2:2,' + ',b:2:2,' = ',a+b:2:2);
      writeln(a:2:2,' - ',b:2:2,' = ',a-b:2:2);
      writeln('Vypne, kdyz stisknes klavesu.');
readln;
end.
ChrastyII
Začátečník
Začátečník
Uživatelský avatar
Registrován: 06. kvě 2006
Bydliště: Praha

Příspěvek od ChrastyII »

hotovo,problém vyřešen :) děkuju moc!ale abych řekl v čem byla chyba...v prvním příspěvku jsem odstranil

until b<>0;
end;
if b<>0 then
begin

to byl první krok...mno a pak ta zbývající chyba byla...ehm mno chybějící středník za příkazem delay :oops: a podle překopané verze Fifiho jsem pak už odstranil zbytečné části pro lepší přehlednost kódu :) takže ještě jednou díky moc...příště než sem napíšu budu dávat větší bacha :roll:
Odpovědět

Zpět na „Programování a web“