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

Вывести на экран самое короткое слово заданной строки (если их несколько, то первое) - C++

Восстановить пароль Регистрация
 
Лилит
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 3
20.05.2014, 09:53     Вывести на экран самое короткое слово заданной строки (если их несколько, то первое) #1
Написать функцию, которая выводит на экран самое короткое слово. Если их несколько, то первое.
Ребят, помогите, пожалуйста, написать программу
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 09:53     Вывести на экран самое короткое слово заданной строки (если их несколько, то первое)
Посмотрите здесь:

Строки: найти самое короткое и самое длинное слово C++
C++ Ввести предложение, и вывести самое короткое слово?
Найти самое короткое слово. Строки C++
C++ Подсчитать количество предложений во всех файлах и вывести на экран самое короткое и самое длинное предложения
Вывести самое длинное и самое короткое слово из строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
20.05.2014, 10:54     Вывести на экран самое короткое слово заданной строки (если их несколько, то первое) #2
Добавлено через 27 минут
C вводом с клавиатуры.
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
#include <iostream>
#include <vector>
#include <string>
#include <limits>
#include <sstream>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::vector<std::string> strings;
 
    std::string sentence;
    std::getline(std::cin, sentence);
    std::istringstream iss(sentence);
 
    std::copy(std::istream_iterator<std::string>(iss),
             std::istream_iterator<std::string>(),
             std::back_inserter<std::vector<std::string>>(strings));
 
    std::string min = *std::min_element(strings.begin(), strings.end(), [](const std::string &a, const std::string &b) -> bool
    {
            if (a.size() < b.size())
                return true;
            return false;
    });
 
    std::cout << min << std::endl;
    return 0;
}
Лилит
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 3
20.05.2014, 11:46  [ТС]     Вывести на экран самое короткое слово заданной строки (если их несколько, то первое) #3
Спасибо большоеее!
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.05.2014, 12:26     Вывести на экран самое короткое слово заданной строки (если их несколько, то первое) #4
Лилит, YouDoItWrong,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
 
int main () {
    typedef std::istream_iterator<std::string> in;
    std::vector<std::string> words{in{std::cin}, in{}};
    std::sort(words.begin(), words.end(), 
        [](const std::string& a, const std::string& b){ return a.size() < b.size(); });
    std::cout << words.begin()->c_str() << std::endl;
}
Так короче (:
Bash
1
2
3
4
ruslan@TFTM-K53TA:~/Programming/c++/cyberforum$ make && ./main 
clang++ main.cpp -o main -std=c++11 -W
ab b
b
Добавлено через 3 минуты
Сортировку можно менять, в данном случае она не нужна.
C++
1
2
    std::string min = *std::min_element(words.begin(), words.end(), 
        [](const std::string& a, const std::string& b){ return a.size() < b.size(); });
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
20.05.2014, 13:04     Вывести на экран самое короткое слово заданной строки (если их несколько, то первое) #5
Цитата Сообщение от outoftime Посмотреть сообщение
Так короче (:
Бесконечно считывает строку. (MinGW 4.8.2)
Bash
1
2
3
4
5
6
7
8
9
10
11
12
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
 
D:\>cd Projects
 
D:\Projects>g++ test.cpp -o test.exe -Wall -pedantic -pipe -march=native -O2 -std=c++11
 
D:\Projects>test.exe
asd AA a
AAAA Aass AssfZ
^C
D:\Projects>
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.05.2014, 13:49     Вывести на экран самое короткое слово заданной строки (если их несколько, то первое) #6
YouDoItWrong, Ctrl+Z для винды - конец ввода.
Yandex
Объявления
20.05.2014, 13:49     Вывести на экран самое короткое слово заданной строки (если их несколько, то первое)
Ответ Создать тему
Опции темы

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