Problem mit TP

Hallo, ich habe ein Problem mit Turbopascal!

Code:
Program ElektronikRechner;
uses crt,dos;
var
rechenabfrage : string;
stromstaerke, spannung, widerstand, leistung : integer;
ergstromstaerke, ergspannung, ergwiderstand, ergleistung : real;
neu : string;
PROCEDURE abfrage;
begin
clrscr;
GotoXY(4,3);
Write('Was möchtest du Ausrechnen? (Spannung/Strom/Widerstand/Leistung)');
readln(rechenabfrage);
end;

PROCEDURE rechnung;
begin
If rechenabfrage ='Spannung'or 'spannung' then
Write('Was ist die Stromstaerke I ?')
readln(stromstaerke)
write('Und was ist der Widerstand R ?')
readln(widerstand)
ergspannung:= stromstaerke * widerstand
GotoXY(10,20)
Write('Die Spannung ist ',ergspanung,' Volt.')
else
If rechenabfrage ='Strom'or 'strom' then
Write('Was ist die Spannung U ?')
readln(spannung)
write('Und was ist der Widerstand R ?')
readln(widerstand)
ergstromstaerke:= spannung / widerstand
GotoXY(10,20)
Write('Die Stromstaerke ist ',ergstromstaerke,' Ampere.)
else
If rechenabfrage ='Widerstand'or 'widerstand' then
Write('Was ist die Spannung U ?')
readln(spannung)
write('Und was ist die Stromstaerke I ?')
readln(stromstaerke)
ergwiderstand:= spannung / stromstaerke
GotoXY(10,20)
Write('Der Widerstand betraegt ',ergwiderstand;' Ohm.)
else
If rechenabfrage ='Leistung'or 'leistung' then
Write('Was ist die Spannung U ?')
readln(spannung)
write('Und was ist die Stromstaerke I ?')
readln(stromstaerke)
ergspannung:= spannung * stromstaerke
GotoXY(10,20)
Write('Die Leistung betraegt ',ergleistung,' Watt.)
end;
PROCEDURE Wiederholung;
BEGIN
writeln('Wollen Sie das Programm Wiederholen? Y/N');
read(antwort);
END;

BEGIN
REPEAT
abfrage;
rechnung;
readln;
Wiederholung;
UNTIL (antwort='n') or (antwort='N');
END.

mir wird immer ein syntax error anzeigt und ich weiß nicht weshalb.. bzw wie ich's behebe..

freue mich über jede Antwort ..

MfG~
 
Wird nicht wenigstens die Zeile ausgegeben? Oder wird der Fehler in der letzten Zeile angezeigt?

Kannst du das Programm nicht einmal ein bisschen reduzieren, also ein paar Prozeduren rausnehmen und dann nach und nach wieder zusammenbasteln bis der Fehler kommt?
Dann hast du die Stelle besser eingegrenzt.

Ausserdem würde ich ganz dringend mal den Code einrücken. Wahrscheinlich liegt es an einem fehlendem oder überflüssigem begin/end.
 
mir wird immer ein syntax error anzeigt und ich weiß nicht weshalb.. bzw wie ich's behebe..
Turbopascal 7 zeigt
Code:
If rechenabfrage ='Spannung'or 'spannung' then <--
Fehler 47. Operandentypen passen nicht zum Operator
Was soll hier auch verglichen werden?
Ohne Klammerung sollte zuerst OR evaluiert werden.
'Spannung' OR 'spannung' ergibt aus der Kompilersicht keinen Sinn ;)
Code:
If (rechenabfrage = 'Spannung')or (rechenabfrage = 'spannung') then
Dann:
Code:
If (rechenabfrage = 'Spannung')or (rechenabfrage = 'spannung') then
Write('Was ist die Stromstaerke I ?')
readln(stromstaerke)
write('Und was ist der Widerstand R ?')
readln(widerstand)
ergspannung:= stromstaerke * widerstand
GotoXY(10,20)
Write('Die Spannung ist ',ergspanung,' Volt.')
Wenn das ein Block sein sollte, fehlen BEGIN, END, Semikolons und zudem ist 'ergspanung' nicht definiert.
Das Gleiche gilt für den Rest:
Code:
If rechenabfrage ='Strom'or 'strom' then
Write('Was ist die Spannung U ?')
...
Write('Die Stromstaerke ist ',ergstromstaerke,' Ampere.)
else
If rechenabfrage ='Widerstand'or 'widerstand' then
Write('Was ist die Spannung U ?')
...
ergwiderstand:= spannung / stromstaerke
GotoXY(10,20)
Write('Der Widerstand betraegt ',ergwiderstand;' Ohm.)
else
If rechenabfrage ='Leistung'or 'leistung' then
Write('Was ist die Spannung U ?')
...
Write('Die Leistung betraegt ',ergleistung,' Watt.)
IF - Bedingungen korrigieren, BEGIN END samt Semikolons einfügen.

Und ja, Einrückungen sollten hilfreich sein.
Ebenso sollte man mit einem kleinen funktionsfähigen Programm anfangen:
Code:
[color=#008800][b]program[/b][/color] Rechner;
[color=#008800][b]uses[/b][/color] crt;
[color=#008800][b]var[/b][/color] antwort:[color=#888888][b]char[/b][/color];
[color=#008800][b]BEGIN[/b][/color]
  [color=#008800][b]REPEAT[/b][/color]
    [color=#003388]readln[/color](antwort);
  [color=#008800][b]UNTIL[/b][/color] antwort [color=#008800][b]in[/b][/color] [[color=#dd2200]'n'[/color], [color=#dd2200]'N'[/color]]
[color=#008800][b]END[/b][/color].
und dieses Schritt für Schritt erweitern (und nach jedem Schritt testen).
 
Zurück
Oben