Groß und klein Schreibung im string zählen



  • Hat jemand ne Idee? 😕 😕



  • Ja.

    Fang klein an und zähl erstmal Zeichen im String.
    Dann kannst du mit Ziffern weitermachen.



  • eins, zwei, drei ...

    Du hast ja noch viel Zeit bis Montag, um deine Hausaufgaben zu lösen ...



  • Wird dir bei deinen Hausis vermutlich nicht weiterhelfen, aber du kannst ja abschauen.

    template<typename Iterator>
    std::pair<std::size_t, std::size_t> count(Iterator begin, Iterator end){
        std::pair<std::size_t, std::size_t> counter;
    
        while(begin != end){
            if(std::isupper(*begin))
                ++counter.first;
            else if(std::islower(*begin))
                ++counter.second;
    
            ++begin;
        }
    
        return counter;
    }
    


  • Paradox schrieb:

    Hat jemand ne Idee? 😕 😕

    Sehr sehr viele!



  • verstehe ich das richtig? es geht darum, die Anzahl der Groß- und Kleinbuchstaben in einem String zu zählen? (oder geht es um die Anzahl der Wörter die groß und klein geschrieben sind?)



  • Zhavok schrieb:

    verstehe ich das richtig? es geht darum, die Anzahl der Groß- und Kleinbuchstaben in einem String zu zählen? (oder geht es um die Anzahl der Wörter die groß und klein geschrieben sind?)

    Es geht darum, dass ihm jemand seine Hausaufgaben macht. Wenn jemand so faul ist, sollte ihm auch nicht geholfen werden. Basta.



  • Das stimmt schon. Aber lernen muss er es sowieso. Bei der nächsten Klausur muss er es auch ohne Hilfe schaffen^^



  • ich möchte keine verdammte Lösung nur ein Ansatz. Für die gerne Hilfe anbieten ich soll zählen aus wie viele buschstaben meine Eingabe besteht.



  • Wo fehlt es denn genau? Beim Einlesen der Eingabe? Beim Iterieren über die Eingabe? Beim Feststellen, ob es sich um einen Klein-/Großbuchstaben handelt? Beim zählen jener Buchstaben? Bei der Ausgabe des Ergebnisses?



  • Paradox schrieb:

    ich möchte keine verdammte Lösung nur ein Ansatz. Für die gerne Hilfe anbieten ich soll zählen aus wie viele buschstaben meine Eingabe besteht.

    Du sollst also die Standardfunktion strlen nachprogrammieren.
    Das sollte eigentlich in jedem Buch/Tutorial zu C vorkommen.



  • Es soll egal sein ob es groß oder klein geschrieben ist also bei scheitert es beim zählen ich weiß nicht wie ich es zum zählen bringen kann. Vlt ist eine schleife sinnvoll ich hab echt keine Ahnung. Nur so mal nebenbei ich hab die kompletten Lösungen zu den Aufgaben doch ich würde es mal selber machen da ich im Zwischentestat es selber machen muss.


  • Mod

    Schleifen sind gut, wenn man die gleiche Aktion mehrmals wiederholen möchte. "Zählen" besteht daraus, dass man wiederholt etwas um Eins erhöht. Denk mal darüber nach.

    Der Trick ist jetzt natürlich, zu wissen, wann man fertig ist mit dem Zählen. Dazu sind gewiss Hinweise oder Lösungen im Unterricht gegeben worden, wie das Ende einer Zeichenkette zu erkennen ist.



  • Paradox schrieb:

    ich möchte keine verdammte Lösung nur ein Ansatz. Für die gerne Hilfe anbieten ich soll zählen aus wie viele buschstaben meine Eingabe besteht.

    Welche Ansatz hast du denn bislang? Zeig mal was du bisher unternommen hast um zu einer Lösung zu kommen.



  • Paradox schrieb:

    Es soll egal sein ob es groß oder klein geschrieben ist also bei scheitert es beim zählen ich weiß nicht wie ich es zum zählen bringen kann. Vlt ist eine schleife sinnvoll ich hab echt keine Ahnung. Nur so mal nebenbei ich hab die kompletten Lösungen zu den Aufgaben doch ich würde es mal selber machen da ich im Zwischentestat es selber machen muss.

    Selber machen heißt bei dir also folgendes: "Ich guck mir die Lösung an. Uhh versteh ich nicht. hmm vielleicht ein Schleifchen. Och nee, doch keine Ahnung. Im Internet nach Lösungen zu einer Standardaufgabe suchen? Uhh nee, ich frag lieber in nem Forum"
    Das ist falsche Weg mein Freund!



  • Also ich hab etwas versucht doch es läüft, nur beim debuggen kommen paar Fehler:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	string text;
    	unsigned int a = 0;
    	cout << "Text eingaben: ";
    	getline(cin, text);
    
    	for (int i = 0; i < text.length; i++)
    	{
    		char x = text.at(i);
    
    		if ((x >= 'a' && x <= 'z') || (x >= 'A' && x <= 'Z'))
    		{
    			a;
    		}
    
    	}
    	cout << "Der Text hat " << a << " Buchstaben" << endl << endl;
    
    	system("pause");
    	return 0;
    
    }
    

    Fehler C3867 "std::basic_string<char,std::char_traits<char>,std::allocator<char>>::length": Keine Standardsyntax; "&" zum Erstellen eines Verweises auf das Member verwenden Project1 d:\fh aachen informatik\ws 2017-18\grundlagen der informatik und höhere programmiersprache\bootcamp\aufgabe 5\project1\quelle.cpp 12

    Fehler C2446 "<": Keine Konvertierung von "unsigned int (__thiscall std::basic_string<char,std::char_traits<char>,std::allocator<char>>::* )(void) noexcept const" in "int" Project1 d:\fh aachen informatik\ws 2017-18\grundlagen der informatik und höhere programmiersprache\bootcamp\aufgabe 5\project1\quelle.cpp 12



  • Beim debuggen? Das Programm wird nicht übersetzt! length ist eine Funktion.



  • a;
    

    Das macht was?



  • Ja ich hab da etwas probiert halt bisschen gepokert bis zu dem

    if
    

    bin ich gekommen dann wusste ich nicht mehr weiter. Ich muss ha erst mit der schleife zählen und dann den Definitionsbereich bestimmen sodass keine Leerzeichen und Sonderzeichen wie z.B. ! gezählt werden. Danach komme ich nicht mehr weiter.



  • Schau halt nach wie du ne Variable inkrementierst.


Anmelden zum Antworten