Vererbung_Aufgabe_1
Diff: Mesic_Beispiel_64.cpp
- Revision:
- 3:4177be942543
- Child:
- 5:0c5eeee1465b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Mesic_Beispiel_64.cpp Tue Apr 21 19:27:26 2020 +0000 @@ -0,0 +1,121 @@ +/* AUFGABE +Ein übergebener String enthält neben anderen (bedeutungslosen) Zeichen öffnende und schließende Klammern, wobei die Klammern rund(), eckig [] oder geschweift {} sein können. + +In einem Programm/Skript ist zu überprüfen, ob Klammern korrekt gesetzt wurden. Dabei gilt: +- jede sich öffnende Klammer wird von einer Klammer gleicher Art wieder geschlossen +- jede sich schließende Klammer wurde von einer Klammer gleicher Art geöffnet +- ein Klammernpaar darf nicht durch andere Klammernpaare überschnitten werden + +Beispiele: +(([[]])) => true +([)] => false +([]]) => false +(())) => false +(() => false +({[])} => false +Gar keine Klammern => true + +*/ + + +#include <stdio.h> +#include <iostream> +#include <string> +using namespace std; + +int main () +{ + + string text; + + cout<<"Tippen Sie Ihre Klammern ein "; + cin>>text; + + int runde=0; + int eckige=0; + int geschweifte=0; + + int len; + + len=text.length(); + +for(int i=0;i<=len-1;i++) //die Anzahl von verschiedene Klammern wird gezaehlt. +{ + + if(text[i]=='('||text[i]==')') + { + runde++; + } + if(text[i]=='['||text[i]==']') + { + eckige++; + } + if(text[i]=='{'||text[i]=='}') + { + geschweifte++; + } + + +} + +int klammernAnzahl=runde+eckige+geschweifte; // hier wird die Summe aller Klammern berechnet + +int textmitte=(klammernAnzahl/2)-1; // der mittlere Klammernindex wird berechnet z.B. ((())) also + ^ + // da kriegen wir die Nummer 2 d.H Index von diese Klammern + +int richtigeZyklen=0; +int falscheZyklen=0; +int n=klammernAnzahl-1; //da kriegen wir den letzten Index der letzte Klammer + + +if(klammernAnzahl%2==0) // wenn die Klammeranzahl nicht gerade ist,es ist automatisch false und das Programm sprint nach unten +{ + + for (int m=0;m<=textmitte;m++) + { + + if( (text[m]=='(' && text[n]==')' ) || (text[m]=='[' && text[n]==']' ) ||(text[m]=='{' && text[n]=='}' ) ) + { + richtigeZyklen++; // oben wird gepruft,ob alle verschiedene Klammern passend zugemacht sind. + } + else + { + falscheZyklen++; //sonst wird da ein false generiert + } + + n=n-1; // von dem letzten Index kommen wir zu nachsten kleineren Index + + } + + + + if (falscheZyklen!=0 && richtigeZyklen!=0) // wenn ein False in for Schlife generiert wurde, da wird er ein False ausgegeben + { + cout<<text<<"=> false"; + } + + else if (falscheZyklen==0 && richtigeZyklen!=0)// wenn kein False in for Schleife vorkommt, dann ist alles richtig + { + cout<<text<<"=> true"; + } + +} + +else +{ + cout<<text<<"=> false"; +} + + + + + + + + return 0; +} + + + +