Registriert seit: 16. Mai 2021
59 Beiträge
Delphi 10.3 Rio
|
Austauschen einer Case Anweisung mit einer Sinnvolleren
26. Mai 2021, 17:43
Hallo Leute,
Ich bin dabei ein Programm zu schreiben, was ein Menü ausgibt in dem man auswählen kann in einem vorher eingegebenem String die Operatoren in Strings umzuwandeln also + = plus etc.
Nun habe ich es mit einer Case Anweisung probiert für jeden einzelnen Operator, jedoch besteht jetzt das Problem, das die Überprüfung endet sobald ein Operator gefunden und umgetauscht wurde. Ich komme leider nicht drauf wie ich das anders erstellen kann sodass das Programm die Überprüfung für die Operatoren nicht beendet sobald eins gefunden wurde.
Würde mich sehr freuen wenn mir jemand auf die Sprünge helfen kann .
Delphi-Quellcode:
{$APPTYPE CONSOLE}
{$R+,Q+,X-}
uses
System.SysUtils;
var
abbruch : Boolean;
menueEingabe : Char;
satz : String;
laufVariable,anzahlPlus,anzahlMinus,anzahlMal,anzahlGeteilt : Word;
plus,minus,mal,geteilt : String;
begin
abbruch := (menueEingabe = upcase('x')) or (menueEingabe = 'x');
plus := ' plus ';
minus := ' minus ';
mal := ' mal ';
geteilt := ' geteilt ';
repeat
writeln('A) Satz eingeben');
writeln('B) Anzahl Operatoren im Satz bestimmen');
writeln('C) Operatoren in Satz ausschreiben');
writeln('D) Alle Wörter entfernen, die keinen Operator erhalten');
writeln('X) Ende');
readln(menueEingabe);
case menueEingabe of
'A','a' : readln(satz);
'B','b' : begin
if length(satz) > 0 then
begin
anzahlPlus := 0;
anzahlMinus := 0;
anzahlMal := 0;
anzahlGeteilt := 0;
for laufVariable := 1 to length(satz) do
begin
case satz[laufVariable] of
'+' : inc(anzahlPlus);
'-' : inc(anzahlMinus);
'*' : inc(anzahlMal);
'/' : inc(anzahlGeteilt);
end;
end;
writeln(anzahlPlus,' + und ',anzahlMinus,' - und ',anzahlMal,' * und ',anzahlGeteilt,' / im Satz gefunden');
end
else writeln('Eingabe ungültig!');
end;
'C','c' : begin
if length(satz) > 0 then
for laufVariable := 1 to length(satz) do
begin
case satz[laufVariable] of
'+' : begin
delete(satz,laufVariable, 1);
insert(plus,satz,laufVariable);
end;
'-' : begin
delete(satz,laufVariable,1);
insert(minus,satz,laufVariable);
end;
'*' : begin
delete(satz,laufVariable,1);
insert(mal,satz,laufVariable);
end;
'/' : begin
delete(satz,laufVariable,1);
insert(geteilt,satz,laufVariable);
end;
end;
end;
writeln(satz);
end;
'D','d' : begin
if length(satz) > 0 then
writeln('Richtig D')
else writeln('Eingabe ungültig!');
end;
'X','x' : abbruch := TRUE
else writeln('Eingabe ist ungültig!');
end;
until (abbruch);
readln;
end.
|