Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
1

Нужен совет для решения задачи

31.05.2014, 11:46. Показов 552. Ответов 8
Метки нет (Все метки)

Задача. Написать программу которая читает последовательность слов с стандартного устройства ввода. И находит среди них повторяющихся..........

Я понятие не имею как сохранит целые слова а не отдельные символы. Если попробовать решит эту задачу принимая во внимание каждый символ в каждом слове, учитывая что при вводе количество слов может быт сколько угодно программа получится не для моего уровня

Как можно сохранит целые слова?

Эта задача в странице 234. Липпман "Вводной курс" Четвертое здание. 2012 год. До этого изучали циклы, массивы, вектор, стринг, операторы if, switch.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2014, 11:46
Ответы с готовыми решениями:

Нужен совет для решения задачки*(одномерные массивы)
Дана функция y=5sin(2x+1)+cos(x+1) на интервале от x1 до x2 с шагом h. Сформировать другой...

Нужен совет по условию задачи.
Всем доброго дня. Занимаюсь по Дейтелу. в седьмой главе есть задача. Моя проблема в том что я...

Нужен совет для грамотного решения по организации 1С
Есть торговая организация. Три торговых точки. Первая точка - три рабочих места с УТ, одно с БП....

Нужен совет по подбору платы/платформы для решения
Приветствую всех! Подскажете, пожалуйста, какую платформу выбрать для такого решения. Нужна...

8
Модератор
Эксперт С++
10528 / 8751 / 5292
Регистрация: 18.12.2011
Сообщений: 23,412
31.05.2014, 11:54 2
Цитата Сообщение от Altair42 Посмотреть сообщение
До этого изучали циклы, массивы, вектор, стринг
Ну вот. vector и string знаете:
C++
1
2
3
4
5
6
vector<string> vv;
string t;
while(cin>>t)// читаем очередное слово
{
    vv.push_back(t); // запихиваем его в вектор
}
0
542 / 485 / 104
Регистрация: 05.05.2014
Сообщений: 1,110
31.05.2014, 11:57 3
Цитата Сообщение от Altair42 Посмотреть сообщение
До этого изучали циклы, массивы, вектор, стринг...
Заведи вектор, да добавляй в него свои слова-стринги...
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
31.05.2014, 12:07  [ТС] 4
Я об этом уже думал но string и vector сохраняет каждый символ а не целое слово. Потом не возможно будет сравнит слова. Ибо в памяти будет только составляющие слов. Так как можно ввести неограниченное количество слов любого размера очень сложно определит где начали и конец следующего слово чтоб организовать их по очереди и сравнит.

Для этого надо написать цикл чтоб проверял каждый символ пока не встретит пробел и сохранял их. Сохранит каждый символ до следующего пробела и до следующего.... это может продолжится вечно .

И что дальше? Я не знаю как сохранит целое слово. Допустим получили первое слово в виде нескольких элементов вектора. Как получит второе слово?
0
Модератор
Эксперт С++
10528 / 8751 / 5292
Регистрация: 18.12.2011
Сообщений: 23,412
31.05.2014, 12:09 5
Цитата Сообщение от Altair42 Посмотреть сообщение
о string сохраняет каждый символ
С чего бы это? На то она и string, чтобы хранить целую строку.
И cin>>t считывает как раз одно слово, пропуская пробелы.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
31.05.2014, 12:21  [ТС] 6
В принципе можно запомнит несколько стрингов и сравнит их и без вектора. Но это не возможно делать при вводе с консоли. Можно ввести неограниченное количество слов.

И не возможно создать переменную при вводе. А то можно было бы организовать неограниченный ввод данных и их проверку, очень легко.

Добавлено через 2 минуты
zss, вот именно. Оно читает все подряд. Но сохраняется отдельные символы.
пример.
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
int main()
{
    setlocale(LC_ALL,"Russian");
    std::string text;
    std::vector<char> vChar;
    std::cout << " Введите текст. " << std::endl;
    std::getline(std::cin,text);
    char s;
    std::cout << " Введите 4 буквы которых надо найти в тексте " << std::endl;
    while(std::cin >> s)
        vChar.push_back(s);
    
    int numChr1 = 0;
    for(std::vector<char>::size_type i = 0; i < vChar.size(); i ++)
    {
        for(std::string::size_type j = 0; j < text.size(); j++)     
        {
            if(vChar[i] == text[j])
                ++numChr1;
        }
        std::cout << "Число букв " << vChar[i] << " " << numChr1 << std::endl;
        numChr1 = 0;
    }
    
    getch();
    return 0;
 }
При вводе любого количество символов( букв, пробелов и все такое), слов, даже целого текста. Программа читает символы по одному.

Добавлено через 4 минуты
В принципе эта задача очень простая.
- объявит 10 разных стрингов.
- ввести с консоли 10 слов на каждый стринг.
- сравнивать стринги а не слова.

А что если придется ввести не 10 слов а 20? Переписать код?
0
36 / 36 / 27
Регистрация: 05.11.2013
Сообщений: 149
31.05.2014, 12:29 7
надо создавать не vector<char> , а vector<string>
0
61 / 42 / 20
Регистрация: 28.09.2013
Сообщений: 193
31.05.2014, 12:33 8
Altair42, вы указали,что читаете Липпмана,и я хочу вам сказать Вы очень невнимательно читаете
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
31.05.2014, 12:47  [ТС] 9
Hrollo, да я и создаю vector<string>

Цитата Сообщение от Tuma Посмотреть сообщение
Altair42, вы указали,что читаете Липпмана,и я хочу вам сказать Вы очень невнимательно читаете
В смысле? Что именно я пропустил?

Сам стринг сохраняет все что написано в консоли. Но сохраняет по буквам пример того следующий цикл.

C++
1
2
3
4
5
for(std::string::size_type j = 0; j < text.size(); j++)     
        {
            if(vChar[i] == text[j])
                ++numChr1;
        }
Тут при итерации j переходит не c слово к слову а с буквы на следующую. При сохранение стринга на вектор будет тоже самое.

Добавлено через 6 минут
Все разобрался. Спасибо всем. Стринг читает по буквам а вектор до пробела.

Добавлено через 33 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    setlocale(LC_ALL,"Russian");
    std::string text;
    std::vector<std::string> vtext;
   std::cout << " Введите несколько слов "<< std::endl;
   while(std::cin >> text)
       vtext.push_back(text);
       for(std::vector<std::string>::iterator iter = vtext.begin();
           iter < vtext.end(); iter++)
           std::cout << *iter << std::endl;
    getch();
    return 0;
 }
Добавлено через 1 минуту
Наверно надо отдохнут. С 8 утра за компом. Даже не поел
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2014, 12:47

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Pascal: программа для решения диофантового уравнения, нужен совет по реализации
Код практически написан, однако столкнулся с одной проблемой. Реализую решение через разложение в...

Нужен совет с решением задачи
Суть токова в xhtml есть 2 формы: Где вводится значение и кнопка &quot;ок&quot;. Надо чтоб,когда...

Нужен совет по решению задачи
Суть задачи: Удалить заказы, сделанные на книги издательства МИР в последние месяцы. Я делаю...

Нужен совет по решению бух задачи
Необходимо реализовать возможность ведения учета товаров в разрезе организаций, мест хранения и...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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