Bruno_Van_D
Grünschnabel
Guten Tag allerseits,
Uni bedingt muss ich mich nun mit C++ 'rumschlagen, obwohl ich mit Programmieren vorher nie viel zu tun hatte.
Nachdem ich mich in strings eingelesen hatte wurde es Zeit für erste Versuche, die auch ganz gut liefen, allerdings stieß ich bald bei der find()-Funktion auf ein Problem:
Es schien mir eine einfache Sache zu sein. Wenn ein Teilstring den ich suche mehrfach in einem anderen string vorkommt, lasse ich ihn eben eine Schleife durchlaufen.
Allerdings musste ich feststellen: Das mit den Abbruchbedingungen klappt nicht so ganz. In einem Thread hier im Forum habe ich etwas gefunden, mit dem ich folgendes konstruiert habe:
Allerdings produziert das dann eine Endlosschleife. Aktuell versuche ich, das ganze in einem Array zu speichern und abzugleichen, wann sich das ganze anfängt zu wiederholen, was sich zwar nicht so einfach anlässt, wie ich dachte, aber zumindest möglich erscheint, auch wenn es wohl nicht die schönste Lösung ist.
Nun zu meiner Frage: Was für eine Abbruchbedingung müsste ich denn einbinden, um jede Position nur einmal aufzurufen?
Viele Grüße,
Bruno
[edit] Es scheint auch noch mehr falsch zu sein, da ich als dritten Wert eine -1 erhalte, mache mich nochmal selbst weiter auf die Suche, wäre für Hilfe aber trotzdem dankbar.
[edit2] Hm, das mit dem Array gibt doch auch einige Probleme, kann es sein, dass man in einer do{}-while-Schleife kein && in der Abbruchbedingung verwenden kann? Mein Versuch
"while( pos[anzahl-1] != pos [0] && anzahl != 1); liefert auf jedenfall nur ein Ergebnis...
Uni bedingt muss ich mich nun mit C++ 'rumschlagen, obwohl ich mit Programmieren vorher nie viel zu tun hatte.
Nachdem ich mich in strings eingelesen hatte wurde es Zeit für erste Versuche, die auch ganz gut liefen, allerdings stieß ich bald bei der find()-Funktion auf ein Problem:
Es schien mir eine einfache Sache zu sein. Wenn ein Teilstring den ich suche mehrfach in einem anderen string vorkommt, lasse ich ihn eben eine Schleife durchlaufen.
Allerdings musste ich feststellen: Das mit den Abbruchbedingungen klappt nicht so ganz. In einem Thread hier im Forum habe ich etwas gefunden, mit dem ich folgendes konstruiert habe:
C++:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string zahlen = "eins zwei drei drei zwei eins";
string such = "zwei";
int anzahl = 0;
int position = 0;
do
{
position = zahlen.find(such, position );
cout << "Position zwei: " << position << endl;
position++;
anzahl++;
}
while(position != zahlen.npos);
cout << "Anzahl " << anzahl << endl;
system ("pause");
}
Allerdings produziert das dann eine Endlosschleife. Aktuell versuche ich, das ganze in einem Array zu speichern und abzugleichen, wann sich das ganze anfängt zu wiederholen, was sich zwar nicht so einfach anlässt, wie ich dachte, aber zumindest möglich erscheint, auch wenn es wohl nicht die schönste Lösung ist.
Nun zu meiner Frage: Was für eine Abbruchbedingung müsste ich denn einbinden, um jede Position nur einmal aufzurufen?
Viele Grüße,
Bruno
[edit] Es scheint auch noch mehr falsch zu sein, da ich als dritten Wert eine -1 erhalte, mache mich nochmal selbst weiter auf die Suche, wäre für Hilfe aber trotzdem dankbar.
[edit2] Hm, das mit dem Array gibt doch auch einige Probleme, kann es sein, dass man in einer do{}-while-Schleife kein && in der Abbruchbedingung verwenden kann? Mein Versuch
"while( pos[anzahl-1] != pos [0] && anzahl != 1); liefert auf jedenfall nur ein Ergebnis...
Zuletzt bearbeitet von einem Moderator: