Vererbung_Aufgabe_1

Committer:
mirzamesic
Date:
Tue Apr 21 19:27:26 2020 +0000
Revision:
3:4177be942543
Child:
5:0c5eeee1465b
Beispiel64

Who changed what in which revision?

UserRevisionLine numberNew 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