Hallo Gemeinde.
Ich habe eine kurze Frage und zwar würde ich gerne die Anzahl der in
einem std::string enthalten Punkte zählen.
z.B.
std::string test="ebene1.ebene2.ebene3.ebene4.ebene5"
int fkt(test);
Die Funktion fkt() soll mir nun 4 zurückgeben.
Gibt es hierfür eine einfache Lösung?
Vielen Dank.
Thomas schrieb:> Gibt es hierfür eine einfache Lösung?
künstliche Intelligenz?
neuronale Netze?
Expertensysteme?
Rekursive Lösung?
Was bittte ist an: jedes Zeichen ansehen und wenn es ein '.' ist, einen
Zähler um 1 erhöhen zu kompliziert, dass man nach einer einfacheren
Lösung suchen muss?
Stell doch bitte das nächste mal deine richtige Frage. Keine Ahnung
worum es da geht. VIelleicht kannst du keine Funktion schreiben.
Vielleicht weißt du auch nicht, wie man einen Text an eine Funktion
übergibt oder wie man ein Rechenergebnis aus einer Funktion heruas
bekommt. Oder du weißt nicht wie man eine for-Schleife aufbaut oder ....
Auf jeden Fall: stell nächstes mal deine richtige Frage und versuch sie
nicht hinter Begriffen wie "einfache Lösung" oder "optimale Lösung" zu
verstecken. Wir merken das sowieso, das da was nicht stimmt.
Noch eine 'einfache' Lösung, wenn "einfach" kurz bedeuten soll
Ja, die Schüler finden hier immer Willige, welche gerne ihr Wissen
demonstrieren und ihnen die Hausaufgabe machen...
Von "Thomas" werdet ihr nie wieder was hören, nichtmal ein Danke!
Udo Schmitt schrieb:> Timmo H. schrieb:>> int fkt(char *test){int i=0;while(*test){if(*test == '.')i++;test++;}return i;}> @Thomas:> Das ist kein c++, das ist c
In 90% aller Fälle ist auch C gemeint, komischerweise wird das aber
immer als C++ verkauft :-)
Karl Heinz Buchegger schrieb:> int fkt(char *test){return!*test?0:(*test=='.')+fkt(test+1);}
Aber dazu muss er, um Rekursion zu verstehen, erst mal Rekursion
verstehen :-)
PisaPaul schrieb:> Ja, die Schüler finden hier immer Willige, welche gerne ihr Wissen> demonstrieren und ihnen die Hausaufgabe machen...
Immer langsam mit den jungen Pferden.
Das sind Lösungen, die er sowieso nicht abgeben kann. Das sieht sein
Lehrer sofort und mit der ersten Nachfrage ist er aufgeschmissen.
da geht noch was, wenn du bedenkst, dass ein Vergleich auch ein
arithmetisches Ergebnis hat. Anstatt *s++=='.'?1:0 kannst du auch
einfach *s++=='.' benutzen.
bastelwastl schrieb:> Bei mir war es der GCC. Aber was bedeutet das '&' bei int, ist das in> diesem Kontext gleichbedeutend mit '*'?
Nicht ganz:
&i ist soviel wie:
1
voidfkt(*i){
2
*i++;
3
}
mit kürzerer Schreibweise. Man muss aber genau aufpassen, wenn man sowas
verwendet :-)
Warscheinlich musst du es als cpp compilieren.
Εrnst B✶ schrieb:> Und, hat jemand eine "echte" C++ Lösung? mit>> #include <algorithm>> #include <functional>>> und>> std::count_if> std::equal_to
Du hast es ja praktisch schon vorgeben
Hab mir gerade eine 'pessimistische' Lösung überlegt:
Rekursiv alle möglichen Sätze innerhalb von 7-Bit ASCII zusammenbauen.
Dabei darauf achten, wieviele Punkte generiert wurden. Hat man auf die
Art einen Satz gebaut, der dem Ausgangssatz entspricht, weiß man
wieviele '.' da drinnen sind.