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

Задача о строке. Удаление дубликатов слов - C++

Восстановить пароль Регистрация
 
Artem8
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 10
14.05.2014, 00:58     Задача о строке. Удаление дубликатов слов #1
В строке символов определить количество повторений каждого слова и удалить дубликаты слов.Слова отделяются пробелами.
помогите новичку,спасибо
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
14.05.2014, 02: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
#include <iostream>
#include <vector>
 
int main()
{
    std::string str;
    std::cout << "Type some text: ";
    getline(std::cin, str);
    
    char* chStr = new char[str.size() + 1];
    std::strcpy(chStr, str.c_str());
    char* p = std::strtok(chStr, " ");
    std::vector<std::string> arr;
    while(p != NULL)
    {
        arr.push_back(p);
        p = strtok(NULL, " ");
    }
    
    std::cout << std::endl;
    int counter = 0;
    
    for(int i = 0; i < arr.size(); i++)
    {
        std::string temp = arr[i];
        for(int j = 0; j < arr.size(); j++)
        {
            if(arr[j] == temp)
            {
                counter++;
                if(counter > 1)
                {
                    arr.erase(arr.begin() + j);
                    j--;
                }
            }
        }
        std::cout << temp << " repeats " << counter << " times\n";
        counter = 0;
    }
    
    std::cout << std::endl;
    for(int i = 0; i < arr.size(); i++)
        std::cout << arr[i] << " ";
    
    std::cout << "\n\n";
    
    system("pause");
    return 0;
}
Artem8
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 10
14.05.2014, 08:32  [ТС]     Задача о строке. Удаление дубликатов слов #3
а можно более проще код или это самый простой?
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
14.05.2014, 15:33     Задача о строке. Удаление дубликатов слов #4
Artem8, смотря что под проще подразумевается. Если хотите убрать стандартные функции
всё будет выглядеть проще только на много длиннее будет код (хотя всё равно сомневаюсь о простоте).
А по приведённому варианту если что-то не понятно могу обяснить
Artem8
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 10
14.05.2014, 17:26  [ТС]     Задача о строке. Удаление дубликатов слов #5
GuGo1991, просто еще не знаком с типом стринг и все что с ним связано(
можешь немного обьяснить ,что собой являет std:: и так далее
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
15.05.2014, 16:56     Задача о строке. Удаление дубликатов слов #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Artem8, std - библиотека, в которой хранятся все классы, объекты и функции стандартной библиотеки С++.
Можно включить её перед главной функцией main(), следующим образом:
C++
1
using namespace std;
И тогда необходимости включения не будет, т.е. вместо std::cin можно просто cin и.т.д.
Но в этом случае бывают конфликты, например при использовании некоторых математических функции
необходимо явное приведение типов.
string - представляет собой массив из char. Есть много стандартых функций, которые помогают манипулировать
контентом string переменной. Некоторые из них я использовал для этой темы (size(), erase()).
Ещё был использован vector - контейнер, представляющий собой массив с "гибким" размером.
Можно было бы использовать динамический массив...
Работу функций strcpy() и strtok() я описывал в этой теме Поиск одинаковых слов в тексте
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 00:02     Задача о строке. Удаление дубликатов слов
Еще ссылки по теме:

C++ задача на подсчет слов в строке
C++ Задача для начинающих. Нахождение дубликатов.
Удаление одинаковых слов в строке C++

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

Или воспользуйтесь поиском по форуму:
Artem8
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 10
16.05.2014, 00:02  [ТС]     Задача о строке. Удаление дубликатов слов #7
GuGo1991, спасибо большое)
Yandex
Объявления
16.05.2014, 00:02     Задача о строке. Удаление дубликатов слов
Ответ Создать тему
Опции темы

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