Vererbung_Aufgabe_1
Mesic_Beispiel_64.cpp
- Committer:
- mirzamesic
- Date:
- 2020-04-21
- Revision:
- 3:4177be942543
- Child:
- 5:0c5eeee1465b
File content as of revision 3:4177be942543:
/* 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; }