AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Austauschen einer Case Anweisung mit einer Sinnvolleren
Thema durchsuchen
Ansicht
Themen-Optionen

Austauschen einer Case Anweisung mit einer Sinnvolleren

Ein Thema von Mo53 · begonnen am 26. Mai 2021 · letzter Beitrag vom 1. Jun 2021
 
Mo53

Registriert seit: 16. Mai 2021
59 Beiträge
 
Delphi 10.3 Rio
 
#1

Austauschen einer Case Anweisung mit einer Sinnvolleren

  Alt 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.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz