{$APPTYPE CONSOLE}
{$R+,Q+,X-}
uses
System.SysUtils;
var
keinOperator, endeErreicht, operatorGefunden, leerzeichenGefunden: Boolean;
menueEingabe: Char;
leerZeichen:
String;
satz:
String;
laufVariable, anzahlPlus, anzahlMinus, anzahlMal, anzahlGeteilt,
wortEnde: Word;
// Schleife zur Ausgabe des Menüs:
begin
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);
writeln;
menueEingabe := upcase(menueEingabe);
case menueEingabe
of
// Option einen Satz einzugeben:
'
A':
begin
write('
Satz eingeben: ');
readln(satz);
end;
// Option alle Operatoren im String aufzuzählen:
'
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;
// Option alle Operatoren im String auszuschreiben:
'
C':
begin
laufVariable := length(satz);
while laufVariable > 0
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;
dec(laufVariable);
end;
writeln(satz);
end;
// Option alle Wörter im String die keinen Operator enthalten zu löschen:
'
D':
begin
if length(satz) > 0
then
begin
laufVariable := length(satz);
wortEnde := length(satz);
endeErreicht := TRUE;
while endeErreicht
do
begin
operatorGefunden := FALSE;
wortEnde := laufVariable;
leerzeichenGefunden := FALSE;
repeat
if ((satz[laufVariable] = '
+')
or (satz[laufVariable] = '
-')
or
(satz[laufVariable] = '
*')
or (satz[laufVariable] = '
/'))
then
operatorGefunden := TRUE;
if (satz[laufVariable] = '
')
then
begin
leerzeichenGefunden := TRUE;
if not operatorGefunden
then
delete(satz, laufVariable, (wortEnde - laufVariable + 1));
end;
if (
not leerzeichenGefunden
and (laufVariable = 1)
and
not operatorGefunden)
then
begin
delete(satz, laufVariable, (wortEnde - laufVariable + 2));
end;
dec(laufVariable);
if laufVariable = 0
then
endeErreicht := FALSE;
until ((laufVariable = 0)
or leerzeichenGefunden);
end;
writeln(satz);
end
else
writeln('
Eingabe ungültig!');
end;
end;
until (menueEingabe = '
X');
end.