Kleine Frage



  • Ich möchte den prozentualen Anteil von Buchstaben innerhalb eines Textes berechnen und ausgeben. Das Programm funktioniert wenn ich ein Wort eingebe und mit Return bestätige.Gebt man z.B AABB ein so wird für A = 50% und B = 50% ausgegeben. Super:) Gebe ich zwei Wörter ein bricht das Programm bei erreichen des ersten Leerzeichens ab.
    Muss eine bestimmte Bibliothek noch geladen werden?



  • Poste mal den Code mit dem du den String einliest. Dann kann man dir besser helfen 😉



  • huhu, ja das hat der >>-Operator so an sich, daher brauchst du für deine Zwecke

    getline ( istream& is, string& str );
    


  • tobi312 schrieb:

    Ich möchte den prozentualen Anteil von Buchstaben innerhalb eines Textes berechnen und ausgeben. Das Programm funktioniert wenn ich ein Wort eingebe und mit Return bestätige.Gebt man z.B AABB ein so wird für A = 50% und B = 50% ausgegeben. Super:) Gebe ich zwei Wörter ein bricht das Programm bei erreichen des ersten Leerzeichens ab.
    Muss eine bestimmte Bibliothek noch geladen werden?

    Du liest mit cin>>text ein, und der operator >> denkt immer, daß Leerzeichen ein Wortende sind und bricht ab, weil er meint, Du wollst ja auch nur ein Wort einlesen.
    Am einfachsten wohl, Du machst ein
    while(cin>>text){ statt nur cin>>text.
    Der op>> ignoriert führende Leerzeichen, das ist ja auch ganz ok beim Buchstabenzählen.
    Oh, nein, while(cin>>text) worde erst abbrechen, wenn cin kaputtgeht, weil die Eingabe endet. Dazu müßte der Benutzer Strg+Z oder Strg+D oder sowas eingeben. Das wissen die meisten Benutzer gart nicht.
    Willst Du den Zeilenumbruch als Endezeichen nehmen, müßte es irgendwas mit getline geben, wenn ich mich recht erinnere getline(cin,text).
    Das da: http://www.cplusplus.com/reference/string/getline/



  • *prost* 👍


Log in to reply