Dubletts und Trippletts in einem String finden
-
Hallo!
Wie kann ich (am besten über eine Zählschleife) die Dubletts (zwei gleiche aufeinander folgende Zeichen) und Tripletts (drei gleiche aufeinander folgende Zeichen) finden?
-
Am besten mit einer Zählschleife jeweils zwei Zeichen vergleichen!?
Mal ehrlich, was ist das denn für eine ... Frage?
-
Ein Beispiel:
Sommer = 1 Dublett
Stalllicht = 1 TtriplettIm Sommer brannte das Stalllicht immer = 3 Dubletts, 1 Triplett.
-
danke für das Beispiel.
dan kannst du daraus jetzt dein zählschlaufe bauen.
wenn du das nicht hinkriegst solltest du mal ein tutorial für C/C++ grundlagen durcharbeiten.
-
Hausaufgaben erledigt ?
String satz="Im Sommer brannte das Stalllicht immer"; int co,dutr[2]={0,0}; for(int i=1;i<satz.Length();i++) { co=0; while(i+co<satz.Length()&&satz[i+co]==satz[i+co+1]) co++; if(co) dutr[co-1]++; i+=co; } Edit1->Text = dutr[0]; Edit2->Text = dutr[1];
-
AnsiString::Pos sollte einfacher sein
-
noch ein Beispiel:
Auf der Bestellliste für die Kaffeeernte der Hawaiiinseln befand sich auch ein Teeei.

-
Christian211 schrieb:
AnsiString::Pos sollte einfacher sein
Nö, Pos bringt dir da nichts.
Was willst du denn Pos zum suchen geben.
Mit algorithm:count könnte man noch was bauen.
-
Eine (mehr oder weniger spontane) Idee - zähl einfach von deiner aktuellen Position aus, wie oft das aktuelle Zeichen vorkommt (bzw. wo das nächste Zeichen steht, das nicht passt):
string text; for(int i=0;i<text.length();) { int j=text.find_first_not_of(text[i],i); if(j==string::npos) j=text.length();//Sonderregelung letztes Zeichen int l=j-i; switch(l) { case 1: break;//Einzelzeichen case 2: cout<<"Dublett gefunden:"<<text[i]<<" an Position "<<i<<endl; case 3: cout<<"Triplett gefunden:"<<text[i]<<" an Position "<<i<<endl; default:cout<<l<<"-Sequenz gefunden:"<<text[i]<<" an Position "<<i<<endl; } i=j; }