Problem in Pascal

H

Holodoc

Guest
Ich habe ein Programm zur Berechnung von Durchmesser, Umfang und Fläche eines Kreises in Pascal geschrieben. Beim Kompilieren kommt aber folgende Fehlermeldung:

kreisb~1.pas(26,40) Error: Constant and CASE types do not match
kreisb~1.pas(26,40) Error: Ordinal expression expected
kreisb~1.pas(26,40) Fatal: Syntax error, : expected but ; found

Ich hab schon einiges versucht, hab aber den Fehler nicht beseitigen können.
Hier ist der Quelltext von dem Programm:

program Kreisberechnung;
var auswahl :char;
var d,A,U :real;
begin
writeln(\'Kreisberechnung\');
writeln(\'===============\');
writeln(\'Ein Kreis ist durch eine der 3 Groessen Durchmesser d, Umfang U oder\');
writeln(\'Flaeche A eindeutig bestimmt.\');
writeln(\'Nach Eingabe von einer der 3 Groessen, werden die beiden fehlenden\');
writeln(\'vom Programm berechnet und auf 2 Nachkommastellen gerundet.\');
writeln(\'Zum Schluss werden alle 3 Werte auf dem Bildschirm ausgegeben.\');
writeln;
writeln;
writeln;
writeln(\'gegeben: gesucht: Auswahl:\');
writeln(\'___________________________________________________\');
writeln(\'Durchmesser Umfang, Flaeche 1\');
writeln(\'Flaeche Durchmesser, Umfang 2\');
writeln(\'Umfang Durchmesser, Flaeche 3\');
writeln;
writeln(\'Programmende 4\');
writeln;
writeln;
write(\'Waehlen Sie eine Zahl: \'); readln(auswahl);
case auswahl of
\'1\' : write(\'Durchmesser: \'); readln(d); U:=pi*d; A:=pi*sqr(d)/4;
\'2\' : write(\'Flaeche: \'); readln(A); d:=sqrt(4*A/pi); U:=pi*d;
\'3\' : write(\'Umfang: \'); readln(U); d:=U/pi; A:=pi*sqr(d)/4;
\'4\' : write(\'Ende\');
else write(\'Eingabe nicht moeglich.\');
end;
writeln;
writeln;
writeln;
writeln(\'Durchmesser Flaeche Umfang\');
writeln(\'========================================\');
writelnwriteln(d:0:2,\' \',A:0:2,\' \',U:0:2);
readln;
end.


Tnx schon mal im Voraus!
 
Hier hast du die lauffähige version, zumindest bei mir:

program Kreisberechnung;
var auswahl :char;
var d,A,U :real;
begin
writeln('Kreisberechnung');
writeln('===============');
writeln('Ein Kreis ist durch eine der 3 Groessen Durchmesser d, Umfang U oder');
writeln('Flaeche A eindeutig bestimmt.');
writeln('Nach Eingabe von einer der 3 Groessen, werden die beiden fehlenden');
writeln('vom Programm berechnet und auf 2 Nachkommastellen gerundet.');
writeln('Zum Schluss werden alle 3 Werte auf dem Bildschirm ausgegeben.');
writeln;
writeln;
writeln;
writeln('gegeben: gesucht: Auswahl:');
writeln('___________________________________________________');
writeln('Durchmesser Umfang, Flaeche 1');
writeln('Flaeche Durchmesser, Umfang 2');
writeln('Umfang Durchmesser, Flaeche 3');
writeln;
writeln('Programmende 4');
writeln;
writeln;
write('Waehlen Sie eine Zahl: '); readln(auswahl);
case auswahl of
'1' : begin write('Durchmesser: '); readln(d); U:=pi*d; A:=pi*sqr(d)/4; end;
'2' : begin write('Flaeche: '); readln(A); d:=sqrt(4*A/pi); U:=pi*d; end;
'3' : begin write('Umfang: '); readln(U); d:=U/pi; A:=pi*sqr(d)/4; end;
'4' : write('Ende');
else write('Eingabe nicht moeglich.');
end;
writeln;
writeln;
writeln;
writeln('Durchmesser Flaeche Umfang');
writeln('========================================');
writeln(d,' ',A,' ',U);
readln;
end.
 
Also bei mir funktionierts nur, wenn ich bei der 4. Case-Of Anweisung und bei der Else Anweisung eine Begin-End Anweisung reinsetzte.

case auswahl of
\'1\' : begin write(\'Durchmesser: \'); readln(d); U:=pi*d; A:=pi*sqr(d)/4; end;
\'2\' : begin write(\'Flaeche: \'); readln(A); d:=sqrt(4*A/pi); U:=pi*d; end;
\'3\' : begin write(\'Umfang: \'); readln(U); d:=U/pi; A:=pi*sqr(d)/4; end;
\'4\' : begin write(\'Ende\'); end;
else begin write(\'Eingabe nicht moeglich.\'); end;
end; {of case}

Danke für die Hilfe! :)
 
Zurück
Oben