Zählen von vorkommen in einem Vektor

Dieses Programm liest zahlen aus einer txt-Datei, wandelt Sie in ganzen zahlen, speichert Sie in einem Vektor, und dann versucht die Ausgabe in einer organisierten Art und Weise wie so....

Wenn txt-Datei sagt:

7 5 5 7 3 117 5

Programm-Ausgänge:

3
5   3
7   2
117

also, wenn die Zahl mehr als einmal vorkommt ausgibt, wie oft das passiert. Hier ist der code, so weit.

#include "std_lib_facilities.h"

int str_to_int(string& s)
{
    stringstream ss(s);
    int num;
    ss >> num;
    return num;
}

int main()
{
    cout << "Enter file name.\n";
    string file;
    cin >> file;
    ifstream f(file.c_str(), ios::in);

    string num;
    vector<int> numbers;
    while(f>>num)
    {
        int number = str_to_int(num);
        numbers.push_back(number);
    }

    sort(numbers.begin(), numbers.end());

    for(int i = 0; i < numbers.size(); ++i)
    {
     if(i = 0 && numbers[i]!= numbers[i+1]) cout << numbers[i] << endl;
     if(i!=0 && numbers[i]!= numbers[i-1])
     {
          cout << numbers[i] << '\t' << counter << endl;
          counter = 0;
     }
     else ++counter;
    }
 }

Edit: Programm stecken. Suchen Sie eine unendliche Schleife jetzt.

Nein, es ist nicht Hausaufgaben. Lesen Profil.
Dein Fehler ist, wenn(i = 0). Sie wollen mit ==. Einzelnes Gleichheitszeichen ist die Zuweisung.
Gah, ich mache immer, wenn ich zu tun != wie gut.
Warum wurde das nicht geschlossen? Er hatte noch nicht einmal eine Frage stellen.
Die änderung der Frage in dieser Art und Weise führen zum erlöschen der ursprünglichen Antworten. Es ist wahrscheinlich am besten, zu akzeptieren, eine Antwort auf die ursprüngliche und starten Sie eine neue Frage für ein neues problem.

InformationsquelleAutor trikker | 2009-07-30

Schreibe einen Kommentar