Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Mesic_Beispiel_64.cpp
00001 /* AUFGABE 00002 Ein übergebener String enthält neben anderen (bedeutungslosen) Zeichen öffnende und schließende Klammern, wobei die Klammern rund(), eckig [] oder geschweift {} sein können. 00003 00004 In einem Programm/Skript ist zu überprüfen, ob Klammern korrekt gesetzt wurden. Dabei gilt: 00005 - jede sich öffnende Klammer wird von einer Klammer gleicher Art wieder geschlossen 00006 - jede sich schließende Klammer wurde von einer Klammer gleicher Art geöffnet 00007 - ein Klammernpaar darf nicht durch andere Klammernpaare überschnitten werden 00008 00009 Beispiele: 00010 (([[]])) => true 00011 ([)] => false 00012 ([]]) => false 00013 (())) => false 00014 (() => false 00015 ({[])} => false 00016 00017 */ 00018 00019 00020 #include <stdio.h> 00021 #include <iostream> 00022 #include <string> 00023 using namespace std; 00024 00025 int main () 00026 { 00027 00028 string text; 00029 00030 cout<<"Tippen Sie Ihre Klammern ein "; 00031 cin>>text; 00032 00033 int runde=0; 00034 int eckige=0; 00035 int geschweifte=0; 00036 00037 int len; 00038 00039 len=text.length(); 00040 00041 for(int i=0;i<=len-1;i++) //die Anzahl von verschiedene Klammern wird gezaehlt. 00042 { 00043 00044 if(text[i]=='('||text[i]==')') 00045 { 00046 runde++; 00047 } 00048 if(text[i]=='['||text[i]==']') 00049 { 00050 eckige++; 00051 } 00052 if(text[i]=='{'||text[i]=='}') 00053 { 00054 geschweifte++; 00055 } 00056 00057 00058 } 00059 00060 int klammernAnzahl=runde+eckige+geschweifte; // hier wird die Summe aller Klammern berechnet 00061 00062 int textmitte=(klammernAnzahl/2)-1; // der mittlere Klammernindex wird berechnet z.B. ((())) also 00063 // ^ 00064 // da kriegen wir die Nummer 2 d.H Index von diese Klammern 00065 00066 int richtigeZyklen=0; 00067 int falscheZyklen=0; 00068 int n=klammernAnzahl-1; //da kriegen wir den letzten Index der letzte Klammer 00069 00070 00071 if(klammernAnzahl%2==0) // wenn die Klammeranzahl nicht gerade ist,es ist automatisch false und das Programm sprint nach unten 00072 { 00073 00074 for (int m=0;m<=textmitte;m++) 00075 { 00076 00077 if( (text[m]=='(' && text[n]==')' ) || (text[m]=='[' && text[n]==']' ) ||(text[m]=='{' && text[n]=='}' ) ) 00078 { 00079 richtigeZyklen++; // oben wird gepruft,ob alle verschiedene Klammern passend zugemacht sind. 00080 } 00081 else 00082 { 00083 falscheZyklen++; //sonst wird da ein false generiert 00084 } 00085 00086 n=n-1; // von dem letzten Index kommen wir zu nachsten kleineren Index 00087 00088 } 00089 00090 00091 00092 if (falscheZyklen!=0 && richtigeZyklen!=0) // wenn ein False in for Schlife generiert wurde, da wird er ein False ausgegeben 00093 { 00094 cout<<text<<"=> false"; 00095 } 00096 00097 else if (falscheZyklen==0 && richtigeZyklen!=0)// wenn kein False in for Schleife vorkommt, dann ist alles richtig 00098 { 00099 cout<<text<<"=> true"; 00100 } 00101 00102 } 00103 00104 else 00105 { 00106 cout<<text<<"=> false"; 00107 } 00108 00109 00110 00111 00112 00113 00114 00115 return 0; 00116 } 00117 00118 00119 00120
Generated on Thu Jul 28 2022 19:49:46 by
1.7.2