Vererbung_Aufgabe_1
Mesic_Beispiel_64.cpp@3:4177be942543, 2020-04-21 (annotated)
- Committer:
- mirzamesic
- Date:
- Tue Apr 21 19:27:26 2020 +0000
- Revision:
- 3:4177be942543
- Child:
- 5:0c5eeee1465b
Beispiel64
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mirzamesic | 3:4177be942543 | 1 | /* AUFGABE |
mirzamesic | 3:4177be942543 | 2 | Ein übergebener String enthält neben anderen (bedeutungslosen) Zeichen öffnende und schließende Klammern, wobei die Klammern rund(), eckig [] oder geschweift {} sein können. |
mirzamesic | 3:4177be942543 | 3 | |
mirzamesic | 3:4177be942543 | 4 | In einem Programm/Skript ist zu überprüfen, ob Klammern korrekt gesetzt wurden. Dabei gilt: |
mirzamesic | 3:4177be942543 | 5 | - jede sich öffnende Klammer wird von einer Klammer gleicher Art wieder geschlossen |
mirzamesic | 3:4177be942543 | 6 | - jede sich schließende Klammer wurde von einer Klammer gleicher Art geöffnet |
mirzamesic | 3:4177be942543 | 7 | - ein Klammernpaar darf nicht durch andere Klammernpaare überschnitten werden |
mirzamesic | 3:4177be942543 | 8 | |
mirzamesic | 3:4177be942543 | 9 | Beispiele: |
mirzamesic | 3:4177be942543 | 10 | (([[]])) => true |
mirzamesic | 3:4177be942543 | 11 | ([)] => false |
mirzamesic | 3:4177be942543 | 12 | ([]]) => false |
mirzamesic | 3:4177be942543 | 13 | (())) => false |
mirzamesic | 3:4177be942543 | 14 | (() => false |
mirzamesic | 3:4177be942543 | 15 | ({[])} => false |
mirzamesic | 3:4177be942543 | 16 | Gar keine Klammern => true |
mirzamesic | 3:4177be942543 | 17 | |
mirzamesic | 3:4177be942543 | 18 | */ |
mirzamesic | 3:4177be942543 | 19 | |
mirzamesic | 3:4177be942543 | 20 | |
mirzamesic | 3:4177be942543 | 21 | #include <stdio.h> |
mirzamesic | 3:4177be942543 | 22 | #include <iostream> |
mirzamesic | 3:4177be942543 | 23 | #include <string> |
mirzamesic | 3:4177be942543 | 24 | using namespace std; |
mirzamesic | 3:4177be942543 | 25 | |
mirzamesic | 3:4177be942543 | 26 | int main () |
mirzamesic | 3:4177be942543 | 27 | { |
mirzamesic | 3:4177be942543 | 28 | |
mirzamesic | 3:4177be942543 | 29 | string text; |
mirzamesic | 3:4177be942543 | 30 | |
mirzamesic | 3:4177be942543 | 31 | cout<<"Tippen Sie Ihre Klammern ein "; |
mirzamesic | 3:4177be942543 | 32 | cin>>text; |
mirzamesic | 3:4177be942543 | 33 | |
mirzamesic | 3:4177be942543 | 34 | int runde=0; |
mirzamesic | 3:4177be942543 | 35 | int eckige=0; |
mirzamesic | 3:4177be942543 | 36 | int geschweifte=0; |
mirzamesic | 3:4177be942543 | 37 | |
mirzamesic | 3:4177be942543 | 38 | int len; |
mirzamesic | 3:4177be942543 | 39 | |
mirzamesic | 3:4177be942543 | 40 | len=text.length(); |
mirzamesic | 3:4177be942543 | 41 | |
mirzamesic | 3:4177be942543 | 42 | for(int i=0;i<=len-1;i++) //die Anzahl von verschiedene Klammern wird gezaehlt. |
mirzamesic | 3:4177be942543 | 43 | { |
mirzamesic | 3:4177be942543 | 44 | |
mirzamesic | 3:4177be942543 | 45 | if(text[i]=='('||text[i]==')') |
mirzamesic | 3:4177be942543 | 46 | { |
mirzamesic | 3:4177be942543 | 47 | runde++; |
mirzamesic | 3:4177be942543 | 48 | } |
mirzamesic | 3:4177be942543 | 49 | if(text[i]=='['||text[i]==']') |
mirzamesic | 3:4177be942543 | 50 | { |
mirzamesic | 3:4177be942543 | 51 | eckige++; |
mirzamesic | 3:4177be942543 | 52 | } |
mirzamesic | 3:4177be942543 | 53 | if(text[i]=='{'||text[i]=='}') |
mirzamesic | 3:4177be942543 | 54 | { |
mirzamesic | 3:4177be942543 | 55 | geschweifte++; |
mirzamesic | 3:4177be942543 | 56 | } |
mirzamesic | 3:4177be942543 | 57 | |
mirzamesic | 3:4177be942543 | 58 | |
mirzamesic | 3:4177be942543 | 59 | } |
mirzamesic | 3:4177be942543 | 60 | |
mirzamesic | 3:4177be942543 | 61 | int klammernAnzahl=runde+eckige+geschweifte; // hier wird die Summe aller Klammern berechnet |
mirzamesic | 3:4177be942543 | 62 | |
mirzamesic | 3:4177be942543 | 63 | int textmitte=(klammernAnzahl/2)-1; // der mittlere Klammernindex wird berechnet z.B. ((())) also |
mirzamesic | 3:4177be942543 | 64 | ^ |
mirzamesic | 3:4177be942543 | 65 | // da kriegen wir die Nummer 2 d.H Index von diese Klammern |
mirzamesic | 3:4177be942543 | 66 | |
mirzamesic | 3:4177be942543 | 67 | int richtigeZyklen=0; |
mirzamesic | 3:4177be942543 | 68 | int falscheZyklen=0; |
mirzamesic | 3:4177be942543 | 69 | int n=klammernAnzahl-1; //da kriegen wir den letzten Index der letzte Klammer |
mirzamesic | 3:4177be942543 | 70 | |
mirzamesic | 3:4177be942543 | 71 | |
mirzamesic | 3:4177be942543 | 72 | if(klammernAnzahl%2==0) // wenn die Klammeranzahl nicht gerade ist,es ist automatisch false und das Programm sprint nach unten |
mirzamesic | 3:4177be942543 | 73 | { |
mirzamesic | 3:4177be942543 | 74 | |
mirzamesic | 3:4177be942543 | 75 | for (int m=0;m<=textmitte;m++) |
mirzamesic | 3:4177be942543 | 76 | { |
mirzamesic | 3:4177be942543 | 77 | |
mirzamesic | 3:4177be942543 | 78 | if( (text[m]=='(' && text[n]==')' ) || (text[m]=='[' && text[n]==']' ) ||(text[m]=='{' && text[n]=='}' ) ) |
mirzamesic | 3:4177be942543 | 79 | { |
mirzamesic | 3:4177be942543 | 80 | richtigeZyklen++; // oben wird gepruft,ob alle verschiedene Klammern passend zugemacht sind. |
mirzamesic | 3:4177be942543 | 81 | } |
mirzamesic | 3:4177be942543 | 82 | else |
mirzamesic | 3:4177be942543 | 83 | { |
mirzamesic | 3:4177be942543 | 84 | falscheZyklen++; //sonst wird da ein false generiert |
mirzamesic | 3:4177be942543 | 85 | } |
mirzamesic | 3:4177be942543 | 86 | |
mirzamesic | 3:4177be942543 | 87 | n=n-1; // von dem letzten Index kommen wir zu nachsten kleineren Index |
mirzamesic | 3:4177be942543 | 88 | |
mirzamesic | 3:4177be942543 | 89 | } |
mirzamesic | 3:4177be942543 | 90 | |
mirzamesic | 3:4177be942543 | 91 | |
mirzamesic | 3:4177be942543 | 92 | |
mirzamesic | 3:4177be942543 | 93 | if (falscheZyklen!=0 && richtigeZyklen!=0) // wenn ein False in for Schlife generiert wurde, da wird er ein False ausgegeben |
mirzamesic | 3:4177be942543 | 94 | { |
mirzamesic | 3:4177be942543 | 95 | cout<<text<<"=> false"; |
mirzamesic | 3:4177be942543 | 96 | } |
mirzamesic | 3:4177be942543 | 97 | |
mirzamesic | 3:4177be942543 | 98 | else if (falscheZyklen==0 && richtigeZyklen!=0)// wenn kein False in for Schleife vorkommt, dann ist alles richtig |
mirzamesic | 3:4177be942543 | 99 | { |
mirzamesic | 3:4177be942543 | 100 | cout<<text<<"=> true"; |
mirzamesic | 3:4177be942543 | 101 | } |
mirzamesic | 3:4177be942543 | 102 | |
mirzamesic | 3:4177be942543 | 103 | } |
mirzamesic | 3:4177be942543 | 104 | |
mirzamesic | 3:4177be942543 | 105 | else |
mirzamesic | 3:4177be942543 | 106 | { |
mirzamesic | 3:4177be942543 | 107 | cout<<text<<"=> false"; |
mirzamesic | 3:4177be942543 | 108 | } |
mirzamesic | 3:4177be942543 | 109 | |
mirzamesic | 3:4177be942543 | 110 | |
mirzamesic | 3:4177be942543 | 111 | |
mirzamesic | 3:4177be942543 | 112 | |
mirzamesic | 3:4177be942543 | 113 | |
mirzamesic | 3:4177be942543 | 114 | |
mirzamesic | 3:4177be942543 | 115 | |
mirzamesic | 3:4177be942543 | 116 | return 0; |
mirzamesic | 3:4177be942543 | 117 | } |
mirzamesic | 3:4177be942543 | 118 | |
mirzamesic | 3:4177be942543 | 119 | |
mirzamesic | 3:4177be942543 | 120 | |
mirzamesic | 3:4177be942543 | 121 |