Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
7 / 7 / 4
Регистрация: 07.09.2012
Сообщений: 178
1

Найти повторения в строках

06.11.2012, 23:26. Показов 3191. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка ,вывести повторяющиеся слово и количество раз сколько оно встречается.
исходного кода нету так как идей как реализировать нет.
Пример den horoshii segodnya a zavtra plohoi den
Вывод
слово den
Кол-во 2

Добавлено через 1 час 41 минуту
я что-то не понятно описал может?или просто не кто не знает?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2012, 23:26
Ответы с готовыми решениями:

Найти наибольшие элементы в чётных строках матрицы, а наименьшие в нечётных строках
Дана матрица n*m. Найти наибольшие элементы в чётных строках, а наименьшие в нечётных строках. ...

Удалить все повторения кроме последнего повторения.
Написать правило, которое в произвольном списке удаляет все повторения, кроме последнего...

Как найти слова, которые повторяются в обеих строках, если разделяю слова в строках , используя Tokenizer
Нужно вывести слова, которые повторяются в обеих строках. Сказали, что нужно разделить строки на...

Найти повторения слов в строке
Нужно найти повторяющиеся слова и вывести "слово - количество повторов" Например, строка "abc abc...

8
348 / 269 / 128
Регистрация: 14.11.2010
Сообщений: 482
06.11.2012, 23:47 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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void split(vector<string>& dest, const string& str, const char* delim)
{
    char* pTempStr = strdup( str.c_str() );      
    char* pWord = strtok(pTempStr, delim);       
    while(pWord != NULL)
    {
        dest.push_back(pWord);
        pWord = strtok(NULL, delim);        
    }
    
    free(pTempStr); 
}
int main()
{
    string str="privet kak tvoie ololo dela qwert? ololo slonik poplp ololo";
    char* delim=" ";
    vector<string> v;
    split(v,str,delim);
    int count=0;
    string current;
    bool leave=false;
    for(int i=0;i<v.size();i++)
    {
        current=v[i];
        for(int j=i+1;j<v.size();j++)
        {
            if(current==v[j])
            {
                leave=true;
                break;
            }
        }
        if(leave) break;
    }
    for(int k=0;k<v.size();k++)
    {
        if(current==v[k]) count++;
    }
    cout<<"Word: "<<current<<endl;
    cout<<"Count: "<<count<<endl;
    system("pause");
    return 0;
}
1
7 / 7 / 4
Регистрация: 07.09.2012
Сообщений: 178
07.11.2012, 01:07  [ТС] 3
Andrey.K, спасибо конечно но это слишком заумный код для меня))
особенно использование vector мне вообще не ясно
0
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 130
07.11.2012, 12:16 4
Вы бы хоть написали что прочли/изучили, от чего отталкиваться?!...
0
7 / 7 / 4
Регистрация: 07.09.2012
Сообщений: 178
07.11.2012, 12:40  [ТС] 5
работал и изучал только циклы,массивы,матрици ,динамическую память и работу со строками ,создание функци
0
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 130
07.11.2012, 14:51 6
vector это практически тоже что и массив (образно)
я Вас подтолкну, Вам же наверное интересно самому решить задачу, вот приведу пример, он не сложный, но его немного нужно отредактировать и дописать, спрашивайте походу, Вам обязательно подскажут...
и прочтите про вектор, там все предельно понятно, тем более что Вы массивы изучили.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    
    vector <string> words; 
    string temp;
    while (cin >> temp)             // считываем слова, отделенные разделителями 
            words.push_back(temp);  // заносим в вектор 
        cout << "Количество слов: " << words.size() << endl; 
 
        for (int i = 0; i< words.size(); ++i)
            if (i==0 || words[i-1]!=words[i]) // это новое слово? 
                cout << words[i] << "\n";
}
Добавлено через 22 минуты
Вот на этом же форуме уже обсуждалось подобное, может тут что-то станет полезным для Вас
0
13 / 13 / 2
Регистрация: 22.10.2011
Сообщений: 35
08.11.2012, 13:33 7
Вот ещё вариант:

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
#include <iostream>
#include <string>
#include <map>
 
int main()
{
    std::string str("    den horoshii     segodnya, a    zavtra  plohoi den   ");
 
    std::string::iterator it(str.begin()), end(str.end()), prev(it);
    std::map<std::string, long> words;
 
    while(it != end && (*it < '0' || (*it > '9' && *it < 'A'))) { ++it; ++prev; }
 
    for (; it != end; ++it)
        if (*it < '0' || (*it > '9' && *it < 'A'))
        {
            ++words[std::string(prev, it)]; prev = it;
 
            while(it != end && (*it < '0' || (*it > '9' && *it < 'A'))) { ++it; ++prev; }
 
            if (it == end) break;
        }
 
    if (prev != it) ++words[std::string(prev, it)];
 
    for (std::map<std::string, long>::iterator wit(words.begin()), wend(words.end()); wit != wend; ++wit)
        if ((*wit).second > 1)
            std::cout << "word: '" << (*wit).first << "'; count: " << (*wit).second << std::endl;
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 08.11.2012
Сообщений: 7
08.11.2012, 13:36 8
разбить строку на слова по пробелу . в stl ведь есть функции сравнения строк ?. или в string
0
13 / 13 / 2
Регистрация: 22.10.2011
Сообщений: 35
08.11.2012, 13:43 9
Ну, или так:

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
#include <iostream>
#include <string>
#include <map>
 
int main()
{
    std::string str("    den horoshii     segodnya, a    zavtra  plohoi den   ");
 
    std::string::iterator it(str.begin()), end(str.end()), prev(it);
    std::map<std::string, long> words;
 
    while(it != end && !std::isalnum(*it)) { ++it; ++prev; }
 
    for (; it != end; ++it)
        if (!std::isalnum(*it))
        {
            ++words[std::string(prev, it)]; prev = it;
 
            while(it != end && !std::isalnum(*it)) { ++it; ++prev; }
 
            if (it == end) break;
        }
 
    if (prev != it) ++words[std::string(prev, it)];
 
    for (std::map<std::string, long>::iterator wit(words.begin()), wend(words.end()); wit != wend; ++wit)
        if ((*wit).second > 1)
            std::cout << "word: '" << (*wit).first << "'; count: " << (*wit).second << std::endl;
 
    return 0;
}
0
08.11.2012, 13:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2012, 13:43
Помогаю со студенческими работами здесь

Узнать, есть ли в массиве повторения и найти их количество
собственно говоря, необходимо получить из массива array(&quot;желтый&quot;, &quot;красный&quot;, &quot;желтый&quot;) ...

Строки: найти все подпоследовательности, не учитывая повторения
Всем привет. Столкнулся с задачей, не могу запрогать свои мысли. Надеюсь на вашу помощь. ...

Найти и напечатать только повторяющиеся числа матрицы и их частоту повторения
сформировать матрицу А5х5 случайных чисел в диапазоне от 0 до 20.Напечатать ее.Найти и напечатать...

Найти и напечатать только повторяющиеся числа матрицы и их частоту повторения
Здравствуйте, помогите решить задачу пожалуйста : Сформировать матрицу А 5×5 случайных чисел...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru