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

простая строка + цикл - C++

Восстановить пароль Регистрация
 
metagalaxy
7 / 7 / 2
Регистрация: 18.02.2012
Сообщений: 61
19.05.2012, 14:32     простая строка + цикл #1
Напишите программу, которая читает последовательность строковых значений со стандартного устройства ввода до тех пор, пока не встретится повторяющееся слово или пока ввод слов не будет закончен. Для чтения текста по одному слову используйте цикл while. Для выхода из цикла при встрече двух совпадающих слов подряд используйте оператор break. Выведите повторяющееся слово, если оно есть, а в противном случае отобразите сообщение, свидетельствующее о том, что повторяющихся слов нет.

Я все в принципе представляю, а вот как это объединить хз.

Добавлено через 17 часов 24 минуты
Читать последовательность строковых значений со стандартного устройства с помощью getline()?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2012, 14:32     простая строка + цикл
Посмотрите здесь:

C++ Простая задача.
Простая программа C++
C++ Простая задача?
простая задача на цикл C++
Простая очередь C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,427
19.05.2012, 18:49     простая строка + цикл #2
это если слово равно предыдущему
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
 
int main()
{
    std::string tmp, last;
    bool b = true;
    std::cin>> last;
    while(std::cin>> tmp)
    {
        if (tmp == last)
        {
            std::cout<< tmp;
            b = false;
            break;
        }
        last = tmp;
    }
    if(b) std::cout<< "No duplicate words";
    return 0;
}
а это, если встретилось слово, которое уже было (неважно где)
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 <vector>
 
int main()
{
    std::vector <std::string> v;
    std::string tmp;
    bool b = true;
    while(std::cin>> tmp)
    {
        if (std::find(v.begin(), v.end(), tmp) != v.end())
        {
            std::cout<< tmp;
            b = false;
            break;
        }
        v.push_back(tmp);
    }
    if(b) std::cout<< "No duplicate words";
    return 0;
}
metagalaxy
7 / 7 / 2
Регистрация: 18.02.2012
Сообщений: 61
19.05.2012, 20:54  [ТС]     простая строка + цикл #3
Цитата Сообщение от MrGluck Посмотреть сообщение
if (std::find(v.begin(), v.end(), tmp) != v.end())
А что за функция такая find()?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,427
19.05.2012, 21:06     простая строка + цикл #4
Цитата Сообщение от metagalaxy Посмотреть сообщение
А что за функция такая find()?
http://cplusplus.com/reference/algorithm/find/
metagalaxy
7 / 7 / 2
Регистрация: 18.02.2012
Сообщений: 61
20.05.2012, 21:18  [ТС]     простая строка + цикл #5
Цитата Сообщение от MrGluck Посмотреть сообщение
Кстати, зачем вообще переменную bool b = true использовать, если можно было бы просто в условном операторе if вписать if(true), вместо if(b)?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,427
21.05.2012, 00:02     простая строка + цикл #6
Цитата Сообщение от metagalaxy Посмотреть сообщение
Кстати, зачем вообще переменную bool b = true использовать, если можно было бы просто в условном операторе if вписать if(true), вместо if(b)?
Потому что оно должно выводить No dublicate words только если мы вышли из цикла сами (Ctrl + Z)
Yandex
Объявления
21.05.2012, 00:02     простая строка + цикл
Ответ Создать тему
Опции темы

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