PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Turbo Pascal] Repeat...Until Problem



DomDynamite
12.08.2002, 23:24
Ich hab jetzt (so nebenbei...) auch mal mit´m Programmieren angefangen und da mal ein Problem mit der Repeat Until Funktion bei Turbo Pascal...

Bilder sagen mehr als Worte, deshalb -> Screenshot...


Es soll also solange wiederholt werden, bis 1, 2, oder 3 eingetippt wurde.....

THX
DomD.

-|SoI|- Shadow
13.08.2002, 16:20
Hi,

ich glaube mich zu erinnern, dass hinter dem REPEAT kein ; kommt und zweitens fragst du doch bei IN (..) Zahlen ab, d.h. das sie ohne Hochkomma geschrieben werden? Ist aber ehrlich gesagt lange lange her, dass ich Pascal programmiert habe ;)

greetz shadow

Kunibert
13.08.2002, 16:43
Das Ganze sollte wohl eher so aus sehen:


program statik;

uses crt;

var taste:char;

begin
textbackground(black);
textcolor(red);
clrscr;
writeln('Statikberechnung:');
writeln;
writeln('1 ... Einfeldträger');
writeln('2 ... Mehrfeldträger');
writeln('3 ... Einfeldträger mit Tragarm');
writeln;
write('Ihre Wahl: ');
repeat
taste:=readly;
until taste in ['1','2','3'];
writeln;
write('Du hast ',taste,' gewählt, das ist ');
case taste of
'1' : writeln ('Einfeldträger.');
'2' : writeln ('Mehrfeldträger.');
'3' : writeln ('Einfeldträger mit Tragarm.')
end;
taste:=readkey;
end.


Dein Problem ist die Variablenart von "art"... Du wirst sie wahrscheinlich als char unter var definiert haben, prüft sie dann aber wie eine numerische Variable ab....

Kunibert
13.08.2002, 16:45
ARGH

taste:=readly; sollte natürlich taste:=readkey; heißen.......

Valium110
13.08.2002, 16:46
Als was hast du Art deklariert?
Wenn es keine geordnete Datenmenge (z.B. Integer) ist, kannst du den Case-Befehl nicht benutzen.
Versuche es doch mal mit integer oder Byte-Deklaration.
Ansonsten kannst du natürlich den Case of-Befehl durch mehrere If then-Anweisungen zu ersetzen.

DomDynamite
13.08.2002, 18:47
THX an Kunibert, [SOI] Shadow und Valium 110...

Ich habe die variable jetzt als byte deklariert (verbraucht auch weniger Speicher, oder?) und den Rest so gemacht wie Kunibert geschrieben hat.....LÄUFT ALLES SUPI *freu* :)

Eine Frage noch:
Muß die Until anweisung immer hinter der "abfrage" (bei mir also ReadKey) stehen, oder kann ich nach ReadKey erst noch mit IF...THEN....ELSE... arbeiten und dann UNTIL hinterhängen???????

Kunibert
13.08.2002, 19:01
Klar kannst Du das auch so machen......

Aber es is natürlich von der Abarbeitung her schneller nur zulässige Tastendrücke durch zu lassen, als immer zusätzlich durch die Schleifenabfragen zu hüpfen.....

Strukturiertes Programmieren... ;-)

DomDynamite
13.08.2002, 21:52
ahaaaa, langsam lichtet sich das Bild....

Strukturiertes Programmieren...., verstehe.....;)