Строки и слова

Рейтинг: 0Ответов: 1Опубликовано: 19.11.2014

Программа должна выводить, сколько раз каждое слово встречается в строке, но этого не происходит. Вот код:

void main()
{   
    map <string,int>m;
    map<string,int>::iterator it;

    vector <string> v1;int n;int sum=1;
cout<<"size of vector"<<endl;
cin>>n;
cin.get();
for(int i=0;i<n;++i)
{   
         string str;
         getline(cin,str,'\n');
}
for(int i=0;i<v1.size();++i)
{   
         m[v1[i]]++;
}
for( it=m.begin();it!=m.end();++it)
{  
        cout<<it->first<<" "<<it->second;
}
system("PAUSE");

}

Ответы

▲ 1Принят

У вас нигде не сохраняются считанные строки. Полагаю, нужно так.

for (int i = 0; i < n; ++i) {
    string str;
    getline(cin, str, '\n');
    v1.push_back(str);
    m.insert(std::make_pair(str, 0));
}
for (int i = 0; i < v1.size(); ++i) {
    m[v1[i]]++;
}

Обновление

http://ideone.com/SPY4Nx Тут всё работает

#include<map>
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>

using namespace std;

int main() {
    map<string, int> m;
    map<string, int>::iterator it;
    vector<string> v1;
    int n;
    int sum = 1;
    cout << "size of vector" << endl;
    cin >> n;
    cin.get();
    for (int i = 0; i < n; ++i) {
        string str;
        getline(cin, str, '\n');
        v1.push_back(str);
        m.insert(std::make_pair(str, 0));

    }
    for (int i = 0; i < v1.size(); ++i) {
        m[v1[i]]++;
    }
    for (it = m.begin(); it != m.end(); ++it) {
        cout << it -> first << " " << it -> second;
    }
    system("PAUSE");
    return 0;
}