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

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

Войти
Регистрация
Восстановить пароль
 
nekosefa
Сообщений: n/a
#1

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

13.01.2012, 14:52. Просмотров 723. Ответов 3
Метки нет (Все метки)

Добрый день!

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

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

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

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

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

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

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

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

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

Для каждого символа заданного текста указать, сколько раз встречается в тексте - C++
Для каждого символа заданного текста указать, сколько раз встречается в тексте. Сообщение об одном символе не должно встречаться больше,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
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"));
У меня после этого приложение сразу экстренно закрывается.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2017, 00:40     Для каждого из слов предложения указать, сколько раз оно встречается в предложении
Еще ссылки по теме:

Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив... - C++
помогите!!!((( дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько...

Для каждого элемента вектора определить, сколько раз он встречается в матрице - C++
Дана целочисленная матрица A(N,M) и целочисленный вектор D(K). Для каждого элемента вектора определить, сколько раз он встречается в...

Сколько раз слово встречается в предложении - C++
Здравствуйте уважаемые программисты. Помогите решить задачу или хотя бы намётки дайте. &quot;Для каждого из слов заданного предложения...

Определить, сколько раз слово встречается в предложении - C++
исправьте пожалуйста. #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main() { const int max=256; char...

Определить, сколько раз встречается заданное слово в предложении - C++
надо найти сколько раз встречается данное слово в предложении))) спасибо!!


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

Или воспользуйтесь поиском по форуму:
zarko97
274 / 34 / 0
Регистрация: 11.10.2015
Сообщений: 323
29.01.2017, 00:40     Для каждого из слов предложения указать, сколько раз оно встречается в предложении #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <algorithm>
 
int main() {
 
    std::string s = "AAA (SDW) SSD(TTY(DA)ASD)A()  AR (P) -M";
 
    int brackets = 0;
    auto new_end = std::remove_if(s.begin(), s.end(), [&brackets](char ch){
        brackets += (ch == '(');
        brackets -= ((ch == ')') && (brackets > 0));
 
        return brackets > 0 || ch == ')';
    });
 
    s.erase(new_end, s.end());
 
    std::cout << s << std::endl;
 
    return 0;
}
Добавлено через 3 минуты
можно в лоб с извратом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int col1 = std::count(str.begin(), str.end(), '('), col2 = std::count(str.begin(), str.end(), ')');
    for (std::string::iterator itr = str.begin(); itr != str.end(); ++itr)
    {
        if (*itr == '(')
        {
            --col1;
            while (!(*itr == ')')) { str.erase(itr); if (*itr == '(') --col1; }
            while (!(col1 == col2))
            {
                if (*itr == '(')   --col1;
                if (*itr == ')') { --col2; str.erase(itr); }
                else str.erase(itr);
            }
        }
    }
    return str;
Yandex
Объявления
29.01.2017, 00:40     Для каждого из слов предложения указать, сколько раз оно встречается в предложении
Ответ Создать тему
Опции темы

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