Vererbung_Aufgabe_1
Mesic_Beispiel_64.cpp@5:0c5eeee1465b, 2020-04-28 (annotated)
- Committer:
- mirzamesic
- Date:
- Tue Apr 28 14:46:56 2020 +0000
- Revision:
- 5:0c5eeee1465b
- Parent:
- 3:4177be942543
Ver2
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 | |
mirzamesic | 3:4177be942543 | 17 | */ |
mirzamesic | 3:4177be942543 | 18 | |
mirzamesic | 3:4177be942543 | 19 | |
mirzamesic | 3:4177be942543 | 20 | #include <stdio.h> |
mirzamesic | 3:4177be942543 | 21 | #include <iostream> |
mirzamesic | 3:4177be942543 | 22 | #include <string> |
mirzamesic | 3:4177be942543 | 23 | using namespace std; |
mirzamesic | 3:4177be942543 | 24 | |
mirzamesic | 3:4177be942543 | 25 | int main () |
mirzamesic | 3:4177be942543 | 26 | { |
mirzamesic | 3:4177be942543 | 27 | |
mirzamesic | 3:4177be942543 | 28 | string text; |
mirzamesic | 3:4177be942543 | 29 | |
mirzamesic | 3:4177be942543 | 30 | cout<<"Tippen Sie Ihre Klammern ein "; |
mirzamesic | 3:4177be942543 | 31 | cin>>text; |
mirzamesic | 3:4177be942543 | 32 | |
mirzamesic | 3:4177be942543 | 33 | int runde=0; |
mirzamesic | 3:4177be942543 | 34 | int eckige=0; |
mirzamesic | 3:4177be942543 | 35 | int geschweifte=0; |
mirzamesic | 3:4177be942543 | 36 | |
mirzamesic | 3:4177be942543 | 37 | int len; |
mirzamesic | 3:4177be942543 | 38 | |
mirzamesic | 3:4177be942543 | 39 | len=text.length(); |
mirzamesic | 3:4177be942543 | 40 | |
mirzamesic | 3:4177be942543 | 41 | for(int i=0;i<=len-1;i++) //die Anzahl von verschiedene Klammern wird gezaehlt. |
mirzamesic | 3:4177be942543 | 42 | { |
mirzamesic | 3:4177be942543 | 43 | |
mirzamesic | 3:4177be942543 | 44 | if(text[i]=='('||text[i]==')') |
mirzamesic | 3:4177be942543 | 45 | { |
mirzamesic | 3:4177be942543 | 46 | runde++; |
mirzamesic | 3:4177be942543 | 47 | } |
mirzamesic | 3:4177be942543 | 48 | if(text[i]=='['||text[i]==']') |
mirzamesic | 3:4177be942543 | 49 | { |
mirzamesic | 3:4177be942543 | 50 | eckige++; |
mirzamesic | 3:4177be942543 | 51 | } |
mirzamesic | 3:4177be942543 | 52 | if(text[i]=='{'||text[i]=='}') |
mirzamesic | 3:4177be942543 | 53 | { |
mirzamesic | 3:4177be942543 | 54 | geschweifte++; |
mirzamesic | 3:4177be942543 | 55 | } |
mirzamesic | 3:4177be942543 | 56 | |
mirzamesic | 3:4177be942543 | 57 | |
mirzamesic | 3:4177be942543 | 58 | } |
mirzamesic | 3:4177be942543 | 59 | |
mirzamesic | 3:4177be942543 | 60 | int klammernAnzahl=runde+eckige+geschweifte; // hier wird die Summe aller Klammern berechnet |
mirzamesic | 3:4177be942543 | 61 | |
mirzamesic | 3:4177be942543 | 62 | int textmitte=(klammernAnzahl/2)-1; // der mittlere Klammernindex wird berechnet z.B. ((())) also |
mirzamesic | 5:0c5eeee1465b | 63 | // ^ |
mirzamesic | 3:4177be942543 | 64 | // da kriegen wir die Nummer 2 d.H Index von diese Klammern |
mirzamesic | 3:4177be942543 | 65 | |
mirzamesic | 3:4177be942543 | 66 | int richtigeZyklen=0; |
mirzamesic | 3:4177be942543 | 67 | int falscheZyklen=0; |
mirzamesic | 3:4177be942543 | 68 | int n=klammernAnzahl-1; //da kriegen wir den letzten Index der letzte Klammer |
mirzamesic | 3:4177be942543 | 69 | |
mirzamesic | 3:4177be942543 | 70 | |
mirzamesic | 3:4177be942543 | 71 | if(klammernAnzahl%2==0) // wenn die Klammeranzahl nicht gerade ist,es ist automatisch false und das Programm sprint nach unten |
mirzamesic | 3:4177be942543 | 72 | { |
mirzamesic | 3:4177be942543 | 73 | |
mirzamesic | 3:4177be942543 | 74 | for (int m=0;m<=textmitte;m++) |
mirzamesic | 3:4177be942543 | 75 | { |
mirzamesic | 3:4177be942543 | 76 | |
mirzamesic | 3:4177be942543 | 77 | if( (text[m]=='(' && text[n]==')' ) || (text[m]=='[' && text[n]==']' ) ||(text[m]=='{' && text[n]=='}' ) ) |
mirzamesic | 3:4177be942543 | 78 | { |
mirzamesic | 3:4177be942543 | 79 | richtigeZyklen++; // oben wird gepruft,ob alle verschiedene Klammern passend zugemacht sind. |
mirzamesic | 3:4177be942543 | 80 | } |
mirzamesic | 3:4177be942543 | 81 | else |
mirzamesic | 3:4177be942543 | 82 | { |
mirzamesic | 3:4177be942543 | 83 | falscheZyklen++; //sonst wird da ein false generiert |
mirzamesic | 3:4177be942543 | 84 | } |
mirzamesic | 3:4177be942543 | 85 | |
mirzamesic | 3:4177be942543 | 86 | n=n-1; // von dem letzten Index kommen wir zu nachsten kleineren Index |
mirzamesic | 3:4177be942543 | 87 | |
mirzamesic | 3:4177be942543 | 88 | } |
mirzamesic | 3:4177be942543 | 89 | |
mirzamesic | 3:4177be942543 | 90 | |
mirzamesic | 3:4177be942543 | 91 | |
mirzamesic | 3:4177be942543 | 92 | if (falscheZyklen!=0 && richtigeZyklen!=0) // wenn ein False in for Schlife generiert wurde, da wird er ein False ausgegeben |
mirzamesic | 3:4177be942543 | 93 | { |
mirzamesic | 3:4177be942543 | 94 | cout<<text<<"=> false"; |
mirzamesic | 3:4177be942543 | 95 | } |
mirzamesic | 3:4177be942543 | 96 | |
mirzamesic | 3:4177be942543 | 97 | else if (falscheZyklen==0 && richtigeZyklen!=0)// wenn kein False in for Schleife vorkommt, dann ist alles richtig |
mirzamesic | 3:4177be942543 | 98 | { |
mirzamesic | 3:4177be942543 | 99 | cout<<text<<"=> true"; |
mirzamesic | 3:4177be942543 | 100 | } |
mirzamesic | 3:4177be942543 | 101 | |
mirzamesic | 3:4177be942543 | 102 | } |
mirzamesic | 3:4177be942543 | 103 | |
mirzamesic | 3:4177be942543 | 104 | else |
mirzamesic | 3:4177be942543 | 105 | { |
mirzamesic | 3:4177be942543 | 106 | cout<<text<<"=> false"; |
mirzamesic | 3:4177be942543 | 107 | } |
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 | return 0; |
mirzamesic | 3:4177be942543 | 116 | } |
mirzamesic | 3:4177be942543 | 117 | |
mirzamesic | 3:4177be942543 | 118 | |
mirzamesic | 3:4177be942543 | 119 | |
mirzamesic | 3:4177be942543 | 120 |