Stránka 1 z 1
kalkulačka v pascalu-prosim radu
Napsal: ned 24. zář 2006, 21:32
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

Napsal: ned 24. zář 2006, 23:56
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

.
edit: a měl bys to mít nadeklarovaný jako real když dělíš a násobíš

Napsal: pon 25. zář 2006, 07:17
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

Napsal: pon 25. zář 2006, 07:35
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.
Napsal: pon 25. zář 2006, 16:13
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).
Napsal: pon 25. zář 2006, 17:34
od ChrastyII
mno chyba při kompilování...teda 2 chyby
line number 11
total error: 2
Napsal: pon 25. zář 2006, 17:39
od Zivan
Za delay() nemas strednik

Napsal: pon 25. zář 2006, 18:41
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.
Napsal: pon 25. zář 2006, 19:53
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

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
