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

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

Войти
Регистрация
Восстановить пароль
 
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
#1

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

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

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

Добавлено через 1 час 41 минуту
я что-то не понятно описал может?или просто не кто не знает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2012, 23:26     Найти повторения в строках
Посмотрите здесь:

Найти повторения слов в строке - C++
Нужно найти повторяющиеся слова и вывести "слово - количество повторов" Например, строка "abc abc cba" "abc - 2" "cba -1" Проблема...

Убедиться, что последние числа ряда повторяются, и найти период повторения - C++
Задан ряд аn=an-2+an-1, a0=0, a1=1. Убедитесь, что последние числа этого ряда повторяются. Чему равна длина периода повторения? Не...

Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных строках. - C++
Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных...

Найти общие слова в двух строках - C++
Здравствуйте, помогите пожалуйста, я начал изучать с++ буквально неделю-две назад и решил создать програмку. Задание моей програмы в том,...

Найти совпадения в строках с помощью regex - C++
Всем привет. Нужно найти совпадения в строках. Если rx присваиваю вручную, то работает. std::tr1::regex rx("Hell") Как только...

Найти минимальные элементы в строках квадратной матрицы - C++
помогите пожалуйста составить код

Найти сумму элементов матрицы в определенных строках - C++
дана целочисленная прямоугольная матрица. определить : 1) сумму элементов в тех строках, которые содержат хотя бы один отрицательный...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
342 / 263 / 15
Регистрация: 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;
}
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
07.11.2012, 01:07  [ТС]     Найти повторения в строках #3
Andrey.K, спасибо конечно но это слишком заумный код для меня))
особенно использование vector мне вообще не ясно
D_bl_M
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 129
07.11.2012, 12:16     Найти повторения в строках #4
Вы бы хоть написали что прочли/изучили, от чего отталкиваться?!...
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
07.11.2012, 12:40  [ТС]     Найти повторения в строках #5
работал и изучал только циклы,массивы,матрици ,динамическую память и работу со строками ,создание функци
D_bl_M
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 129
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 минуты
Вот на этом же форуме уже обсуждалось подобное, может тут что-то станет полезным для Вас
Ptomaine
13 / 13 / 0
Регистрация: 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;
}
cosmo77
0 / 0 / 0
Регистрация: 08.11.2012
Сообщений: 7
08.11.2012, 13:36     Найти повторения в строках #8
разбить строку на слова по пробелу . в stl ведь есть функции сравнения строк ?. или в string
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2012, 13:43     Найти повторения в строках
Еще ссылки по теме:

Найти сумму элементов в парных строках матрицы - C++
Что значит ошибка С++ для начинающих #include &lt;iostream&gt; #include &quot;stdio.h&quot; using namespace std; int main() { FILE...

В двух строках найти подстроки и наибольшую подстроку - C++
char *beg_a , *beg_b; char a = &quot;Father is strong&quot;; char b = &quot;In math give bool str&quot;; char temp; int end_a,end_b,i; ...

Найти самое длиное общее слово в строках - C++
Дано две строки. Нужно найти самое длиное общее слово в строках Например, - Привет, меня зовут Настя - Привет, меня зовут Иван ...

Найти первый и последний положительный элемент в строках матрицы - C++
Организовать двухмерный массив с вещественными числами и найти первый и последний положительный элемент в строках массива.

Найти все последовательности из трёх нулей в заданных строках - C++
Ввести в память ПЭВМ с клавиатуры три строки, в каждой из которых не более 80 символов. Написать программу, которая ищет все...


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

Или воспользуйтесь поиском по форуму:
Ptomaine
13 / 13 / 0
Регистрация: 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;
}
Yandex
Объявления
08.11.2012, 13:43     Найти повторения в строках
Ответ Создать тему
Опции темы

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