Vererbung_Aufgabe_1

Committer:
mirzamesic
Date:
Tue Apr 28 14:46:56 2020 +0000
Revision:
5:0c5eeee1465b
Parent:
3:4177be942543
Ver2

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