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

Для каждого из слов предложения указать, сколько раз оно встречается в предложении - C++

Восстановить пароль Регистрация
 
nekosefa
Сообщений: n/a
13.01.2012, 14:52     Для каждого из слов предложения указать, сколько раз оно встречается в предложении #1
Добрый день!

Не могу решить две задачи в с++ , поскажите пожалуйста:

1. Для каждого из слов предложения указать, сколько раз оно встречается в предложении.
2. В предложении исключить группы символов, расположенных между скобками «(» и «)». Сами скобки тоже должны быть исключены.

если можно то с объяснением, со строками в си совсем не дружу

Заранее благодарна!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 14:52     Для каждого из слов предложения указать, сколько раз оно встречается в предложении
Посмотрите здесь:

Для каждого из слов данного текста указать, сколько раз оно встречается в предложении C++
Для каждого символа заданного текста указать, сколько раз он встречается в тексте C++
C++ Сколько раз слово встречается в предложении
Определить, сколько раз слово встречается в предложении C++
C++ Для каждого элемента вектора определить, сколько раз он встречается в матрице
C++ Для каждого из слов данного текста указать, сколько раз оно встречается в предложении
Для каждого из слов указать, сколько раз оно встречается в заданном тексте C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
13.01.2012, 16:22     Для каждого из слов предложения указать, сколько раз оно встречается в предложении #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
1. заранее извиняюсь за излишние комментарии

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
#include <sstream>
#include <map>
#include <string>
#include <locale>
#include <iostream>
 
using std::map;
using std::string;
using std::stringstream;
using std::locale;
using std::cout;
 
 
 
void call2 (const char* str)
    {
 
    stringstream s1;  //строковый поток
    s1<<str; // строка считывается в поток
    string s;
    map<string,int> M;  //map для подсчета вхождений слов
    
    while(!s1.eof()) // выполняется до "конца строки"
    {
        s1>>s;
        if(s.find(',')!=s.npos||s.find('!')!=s.npos) //удаляем запятые и воскл знаки, чтобы считать слова, 
        s.pop_back(); //можно добавить еще символы для удаления
 
    M[s]++;  //найдя повтор увеличиваем второе значение ("счетчик") в map;
 
    }
    map<string, int>::iterator IT;
    IT = M.begin();
 
    while (IT!=M.end()) // вывод результата
    {
        cout<<IT->first<<" "<<IT->second<<"\n";
        ++IT;
    }
 
    };
 
 
 
int main (int args, char* arg[])
{
    char* str = "привет как дела, привет как дела!";
 
    
    locale::global(locale("RUS")); //русский язык в консоль
    
    call2(str); // вызов для подсчета вхождений слов и вывода результата
 
    return 0;
}

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
#include <string>
#include <locale>
#include <iostream>
using std::string;
using std::locale;
using std::cout;
 
void call3 (const char* str)
        { 
 
                string s;
        s= str;
                    
        size_t a = s.find_first_of('(');
        size_t b = s.find_first_of(')');
 
        if(a!=s.npos&&b!=s.npos) //найдены ли скобки?
        {
        s.erase(a,++b-a);// удаление (*****) и дальнейший поиск     
        return call3(s.c_str());    //рекурсивный вызов
        }
 
        else
        {
            cout<<s; // если мы здесь то все скобки и их содержимое удалено
            return;
        }
        
};
 
 
 
int main (int args, char* arg[])
{
        char* str = "привет (как) (дела,) привет (как) дела!"; 
        
        locale::global(locale("RUS"));
        
        call3(str);
 
        return 0;
}
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
13.01.2012, 20:29     Для каждого из слов предложения указать, сколько раз оно встречается в предложении #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от nekosefa Посмотреть сообщение
1. Для каждого из слов предложения указать, сколько раз оно встречается в предложении.
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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
class FindWord
{
    string toFind;
    string::iterator it;
    public:
    FindWord(string s) :toFind(s),it(toFind.begin()){}
    bool operator()(char ch)
    {
        if(ch==*it)
         it++;
        else
        {
            it=toFind.begin();
            return false;
        }
        if(*it==toFind[toFind.length()])
        {
            it=toFind.begin();
            return true;
        }
 
        return false;
    }
};
 
int main()
{
    string str="some string some some string";//some = 3
    FindWord f("some");
    cout<<count_if(str.begin(),str.end(),f);
}
Добавлено через 2 минуты
AzaKendler, увидел у вас строки по локализациям
C++
1
locale::global(locale("RUS"));
У меня после этого приложение сразу экстренно закрывается.
Yandex
Объявления
13.01.2012, 20:29     Для каждого из слов предложения указать, сколько раз оно встречается в предложении
Ответ Создать тему
Опции темы

Текущее время: 01:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru