Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
agressorWOLF
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 4
#1

Подсчет числа слов в тексте. Слишком много аргументов для вызова - C++

27.03.2014, 06:16. Просмотров 403. Ответов 1
Метки нет (Все метки)

Пожалуйста помогите, нужно подсчитать количество слов в тексте, у меня выводит 2 ошибки:
Ошибка 1 error C2197: bool (__cdecl *)(std::_Tree_iterator<_Mytree>): слишком много аргументов для вызова C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\algorithm 3720
Ошибка 2 error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\algorithm 3720

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include <algorithm>
#include <fstream>
#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;
bool lessthan(map<string,unsigned int>::iterator); 
const int & it1 (map<string, unsigned int>::iterator const& it2);
 
int main(int argc, char* argv[])
{
int total_words(0);
map<string,unsigned int> words_base;
vector<map<string,unsigned int>::iterator> index;
if (argc <2){
cout<<"Usage:"<<endl;
return 1;
}
ifstream in(argv[1]);
if (!in) {
cout<<"Can't open input file"<<endl;
}
string word;
while (in>>word) {
++words_base[word];
++total_words;
}
{// Вывод в порядке увелечения частоты встреч
map<string,unsigned int>::iterator it(words_base.begin());
map<string,unsigned int>::iterator const end(words_base.end());
cout << "Words by alphabet:"<<endl;
while (it !=end){
cout<<it->first<<"("<<it->second<<")"<<endl;
index.push_back(it); ++it;
}
}
{
cout<<endl;
cout<<"words by frequency:"<<endl;
sort(index.begin(),index.end(),lessthan);
vector<map<string,unsigned int>::iterator>::iterator it(index.begin());
vector<map<string,unsigned int>::iterator>::iterator end(index.end());
while (it!=end){
cout<<(*it)->first<<"("<<(*it)->second<<")"<<endl; ++it;
}
}
cout<<endl;
cout<<"total words:"<<total_words<<endl;
cout<<"unique words:"<<words_base.size()<<endl;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 06:16     Подсчет числа слов в тексте. Слишком много аргументов для вызова
Посмотрите здесь:
Слишком много аргументов в вызове функции, подчеркивает то что красным C++
Ошибка "Слишком много аргументов в вызове функции" C++
C++ Ошибка "Слишком много аргументов в вызове функции"
C++ Полиморфизм и ошибка "Слишком много аргументов"
C++ Подсчет слов в тексте
Подсчет слов в тексте со многими пробелами C++
C++ Слишком мало аргументов в функции
C++ Слишком мало аргументов в вызове функции
Слишком мало аргументов в вызове функции C++
C++ Слишком мало аргументов в вызове функции
C++ Подсчет числа слов во введенных данных
Подсчет числа слов в предложении до точки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
27.03.2014, 07:20     Подсчет числа слов в тексте. Слишком много аргументов для вызова #2
Отформатировал код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <algorithm>
#include <fstream>
#include <iostream>
#include <map>
#include <string>
#include <vector>
 
using namespace std;
 
bool lessthan(map<string,unsigned int>::iterator);
const int & it1 (map<string, unsigned int>::iterator const& it2);
 
int main(int argc, char* argv[])
{
    int total_words = 0;
    map<string,unsigned int> words_base;
    vector<map<string,unsigned int>::iterator> index;
 
    if (argc < 2)
    {
        cout << "Usage:" << endl;
        return 1;
    }
 
    ifstream in(argv[1]);
 
    if(!in)
        cout << "Can't open input file" << endl;
 
    string word;
 
    while (in>>word)
    {
        ++words_base[word];
        ++total_words;
    }
 
    {// Вывод в порядке увелечения частоты встреч
 
        map<string,unsigned int>::iterator it(words_base.begin());
        map<string,unsigned int>::iterator const end(words_base.end());
 
        cout << "Words by alphabet:" << endl;
 
        while (it !=end)
        {
            cout << it->first << '(' << it->second << ')' <<endl;
            index.push_back(it); ++it;
        }
    }
 
    {
        cout << endl;
        cout << "words by frequency:" << endl;
 
        sort(index.begin(), index.end(), lessthan);
 
        vector<map<string,unsigned int>::iterator>::iterator it(index.begin());
        vector<map<string,unsigned int>::iterator>::iterator end(index.end());
 
        while (it!=end)
        {
            cout << (*it)->first << "(" << (*it)->second << ")" << endl;
            ++it;
        }
    }
 
    cout<<endl;
 
    cout << "total words:" << total_words << endl;
 
    cout << "unique words:" << words_base.size() << endl;
 
    return 0;
}
У вас есть объявление функции компаратор lessthan.
C++
1
bool lessthan(map<string,unsigned int>::iterator);
Которая используется в
C++
1
sort(index.begin(), index.end(), lessthan);
Но данная функция не описана, опишите её.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru