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

Найти длину самого короткого и самого длинного слова, а также сами эти слова - C++

Восстановить пароль Регистрация
 
papik1234567890
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 14
13.12.2012, 01:21     Найти длину самого короткого и самого длинного слова, а также сами эти слова #1
Народ, помогите, пожалуйста, как мне написать код в с++ програмки, в которой дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Найти длину самого короткого и самого длинного слова, а также сами эти слова.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 01:21     Найти длину самого короткого и самого длинного слова, а также сами эти слова
Посмотрите здесь:

Дана строка содержащая текст. Найти длину самого короткого и самого длинного слова. C++
Найти длину самого короткого слова C++
Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слова. C++
C++ Найти длину самого короткого слова и самого длинного слова в строке
Найти длину самого короткого и самого длинного слова. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
13.12.2012, 01:48     Найти длину самого короткого и самого длинного слова, а также сами эти слова #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 <sstream>
#include <algorithm>
#include <iterator>
 
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::istringstream ist(str);
    auto res = std::minmax_element(std::istream_iterator<std::string>(ist),
        std::istream_iterator<std::string>(),
        [](const std::string &s1, const std::string &s2)
        {
            return s1.length() < s2.length();
        } );
    std::cout << "Min: " << *res.first << " with length "
              << res.first->length() << "\nMax: " << *res.second
              << " with length " << res.second->length() << std::endl;
}
papik1234567890
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 14
13.12.2012, 02:18  [ТС]     Найти длину самого короткого и самого длинного слова, а также сами эти слова #3
не работает(((
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
13.12.2012, 02:20     Найти длину самого короткого и самого длинного слова, а также сами эти слова #4
http://liveworkspace.org/code/3t6VL5
papik1234567890
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 14
13.12.2012, 14:54  [ТС]     Найти длину самого короткого и самого длинного слова, а также сами эти слова #5
17 ошибок(
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
13.12.2012, 15:37     Найти длину самого короткого и самого длинного слова, а также сами эти слова #6
papik1234567890, у MrGluck используется C++11. Ваш компилятор судя по всему его не поддерживает
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
13.12.2012, 16:44     Найти длину самого короткого и самого длинного слова, а также сами эти слова #7
Цитата Сообщение от papik1234567890 Посмотреть сообщение
не работает(((
Работает, но не у вас.
Ввот для С++03
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
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
 
bool cmp(const std::string &s1, const std::string &s2)
{
    return s1.length() < s2.length();
}
 
int main()
{
    std::string str, min, max;
    std::getline(std::cin, str);
    std::istringstream ist(str);
    min = *std::min_element(std::istream_iterator<std::string>(ist),
        std::istream_iterator<std::string>(), cmp);
    //ist.seekg(0);
    ist.clear();
    ist.str(str);
    max = *std::max_element(std::istream_iterator<std::string>(ist),
        std::istream_iterator<std::string>(), cmp);
 
    std::cout << "Min: " << min << " with length " << min.length() << "\nMax: "
              << max << " with length " << max.length() << std::endl;
}
papik1234567890
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 14
14.12.2012, 19:30  [ТС]     Найти длину самого короткого и самого длинного слова, а также сами эти слова #8
Спасибо огромное))) а можете комменты написать, если не тяжело?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 21:41     Найти длину самого короткого и самого длинного слова, а также сами эти слова
Еще ссылки по теме:

Строки (Найти длину самого короткого и самого длинного слова, а также сами эти слова) C++
Разработать программу, осуществляющую поиск самого короткого и самого длинного слова во вводимом тексте C++
C++ Строки. Найти длину самого короткого слова

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
14.12.2012, 21:41     Найти длину самого короткого и самого длинного слова, а также сами эти слова #9
Цитата Сообщение от papik1234567890 Посмотреть сообщение
Спасибо огромное))) а можете комменты написать, если не тяжело?
Не тяжело
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
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
 
bool cmp(const std::string &s1, const std::string &s2) // описываем компаратор (как будем сравнивать строки)
{
    return s1.length() < s2.length();
}
 
int main()
{
    std::string str, min, max;
    std::getline(std::cin, str); // считываем строку до первого '\n', т.е. до нажатия Enter
    std::istringstream ist(str); // инициализируем строковый поток ввода строкой
    min = *std::min_element(std::istream_iterator<std::string>(ist), // находим слово с минимальной длиной, min_element возвращает итератор на него, поэтому разыменовываем. 
        std::istream_iterator<std::string>(), cmp); // проходимся по всему потоку, извлекая из него данные как std::string, используя описанный компаратор
    //ist.seekg(0);
    ist.clear(); // очищаем поток, т.к. флаги установлены на конец потока
    ist.str(str); // заново инициализируем его той же строкой, но теперь уже не в конструкторе а специальным методом
    max = *std::max_element(std::istream_iterator<std::string>(ist), // находим максимально длинное слово по тому же принципу, что и выше
        std::istream_iterator<std::string>(), cmp);
 
    std::cout << "Min: " << min << " with length " << min.length() << "\nMax: " // выводим результат на экран
              << max << " with length " << max.length() << std::endl;
}
Yandex
Объявления
14.12.2012, 21:41     Найти длину самого короткого и самого длинного слова, а также сами эти слова
Ответ Создать тему
Опции темы

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