vector auswerten



  • Ich habe ein Problem.
    Ich möchte mehrere Wöerter in einen vector einlesen und anschliessend jedes einzelne element auswerten.

    Hier ist das bis jetzt geschrieben programm:

    #include "stdafx.h"
    #include <string>
    #include <iostream>
    #include <vector>
    using namespace std;

    int _tmain(int argc, _TCHAR* argv[])
    {

    cout<<"Bitte geben sie einen text ein:"<<endl;
    vector <string> str;
    string x;
    while(cin>>x){
    str.push_back(x);
    }

    int a_counter=0, c_counter=0; //Nach a und c suchen
    int j=0;
    for (int i=0; i<str.size(); ++i) {

    Hier soll jedes einzelne element nach a und c durchsucht werden und anschliesend soll das programm ausgeben oder das element mehr a oder c hat.
    Wie mache ich das????
    +Danke für die Hilfe.
    MfG Erich



  • Hallo,
    Erstmal machen wir deinen obigen Code-Snipsel portabel. Sprich wir formen in zu einem standard-C++ konformen Code um. Auf gehts:

    // #include "stdafx.h" // brauchst du im gezeigten Snippet nicht.
    #include <string>
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() // weg mit int _tmain(int argc, _TCHAR* argv[]) ;)
    {
    
    	cout<<"Bitte geben sie einen text ein:"<<endl;
    	vector <string> str;
    	string x;
    	while(cin>>x){
    		str.push_back(x);
    	}
    
    // Um das Zählen kümmern wir uns später.
    /* 
    int a_counter=0, c_counter=0;  //Nach a und c suchen
    int j=0;
    for (int i=0; i<str.size(); ++i) {*/
    
    }
    

    Nun bauen wir mit Hilfe des Algorithmus count() eine nette Funktion, die die Anzahl der Vorkommen eines Zeichens in einem Container, bestehend aus Zeichenketten, zurückgibt:

    template<class T>
    size_t count_char(const T& container, int search_for)
    {
        size_t result = 0;
        for(typename T::const_iterator it = container.begin(); it != container.end(); ++it)
            result += count(it->begin(), it->end(), search_for); // nach dem Wert search_for in jedem container suchen...
        return result;
    }
    

    Fertig. Den Rest kriegst du alleine hin, oder? 😉

    Gruß Caipi



  • Nicht so richtig.
    Wäre super wenn du mir noch ein bisschen weiter hilfst.
    Danke :xmas1:



  • Wieviel zahlst du?



  • Wo hapert es denn? Die oben angegebene Funktion zählt dir jeweils das Zeichen "search_for" im Container "container" (zweidimensionale Struktur - für deine Anwendung ist T = vector<string>). Die mußt du nur noch auf deinen Vektor anwenden, um die 'a' bzw. 'c' zu zählen und anschließend die zurückgegebenen Werte vergleichen.

    (@Caipi: Ich hätte der Funktion noch einen zweiten Template-Parameter spendiert ;))



  • wo muss ich das temlate<class T> eibauen und wie muss ich es für meine anwendung umschreiben?
    Wo kommt das T = vector<string> hin???
    Danke


Anmelden zum Antworten