Frage zu Strings
-
ich muss ein programm schreiben; welches einen einzeiligen taxt einliest sowie eine aneinanderreihung zu zählender zeichen. Das Programm soll dann anzeigen wie oft das jeweilige zu zählende zeichen in dem text vorkommt.
so soll die ausgabe nachher sein:
Bitte geben Sie den Text ein: ? Dies ist ein Text.
Bitte geben Sie die zu zaehlenden Zeichen ein: ? aeiTt
Das Zeichen a kommt 0 mal in dem Text vor.
Das Zeichen e kommt 3 mal in dem Text vor.
Das Zeichen i kommt 3 mal in dem Text vor.
Das Zeichen T kommt 1 mal in dem Text vor.
Das Zeichen t kommt 2 mal in dem Text vor.
Drücken Sie eine beliebige Taste . . .Dei Benutzereingabe ist hier fett.
-
Und hast du dazu auch eine Frage, oder möchtest du uns nur informieren, dass du die Aufgabe jetzt, montagabends, angehst?
-
@yahendrik ich würde gerne wissen wie ich mithilfe von strings einzelne zeichen zählen kann
-
Woran genau hakt es denn? Auf einzelne Zeichen eines Strings kannst du mit eckigen Klammern zugreifen.
-
Und die Anzahl der Zeichen bekommst du über die Funktion ".length()" des String-Objekts raus.
-
@wob ich bin nicht sicher, wie ich die zu zählenden Zeichen auf den string text beziehen soll .
-
Ganz einfach. Du nimmst eine for-Schleife und läufst jedes einzelne Zeichen des Strings durch. Diese Zeichen sind nun der Key einer Map (std::map) und der Value zum Key ist dein Zähler. Nach der for-Schleife machst du eine weitere for-Schleife, die nun die Map durchläuft und die Keys und die dazugehörigen Values ausgibt.
-
...und wenn du noch keine Maps kennst, kannst du das auch lösen:
für jedes Zeichen aus dem String: wenn es das erste Vorkommen dieses Zeichens ist *: zähle, wie oft das Zeichen vorkommt gibt Zeichen und Anzahl aus
Den *-Check kannst du auch weglassen, dann bekommst du bei "HALLO" eben 2x "L" und 2 raus.
Insbesondere für längere Strings (aber auch allgemein) ist die Map natürlich sinnvoller.
-
@out könntest du ein Beispiel geben
-
@Lilly sagte in Frage zu Strings:
@out könntest du ein Beispiel geben
Könntest du eine Suchmaschine deiner Wahl benutzen? Die Referenz von std::map inkl. Beispiel sollte doch wohl zu finden sein.
-
@wob das einzige was mir jetzt noch fehlt ist, wie die die zahlen angezeigt werden.
-
@Lilly Naja Beipiel, da kannst kein Beispiel mehr machen das ist dann schon die Lösung.
int main() { string str{"1111111111"}; map<char,int> m; for(auto c: str) ++m[c]; for(const auto& p : m) cout << p.first << " kommt " << p.second << "x vor." << endl; } Hangel dich da mal durch.