Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Atantares
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 9
#1

Строки: вывести слова с наименьшим количеством букв; удалить слова, начинающиеся с маленькой буквы - C++

15.11.2016, 15:35. Просмотров 349. Ответов 5
Метки нет (Все метки)

Здравствуйте. Помогите, пожалуйста сделать программу...
Задание:
Составить программу, которая выводит на экран слова с наименьшим количеством букв, и отдельно удалить все слова начинающиеся с маленькой буквы и вывести оставшейся слова. (Строку вводить с клавиатуры)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2016, 15:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Строки: вывести слова с наименьшим количеством букв; удалить слова, начинающиеся с маленькой буквы (C++):

Удалить из строки слова, начинающиеся с одинаковой буквы - C++
Здравствуйте! Помогите, пожалуйста, с решением такой задачи: составить программу, которая удаляла бы из строки слова, начинающиеся с...

Вывести все слова из строки, начинающиеся с определенной буквы - C++
Написать программу,которая выводит все слова из строки,начинающиеся с определенной буквы

Вывести все слова, начинающиеся с большой буквы, из заданной строки - C++
С клавиатуры вводится строка S. Она содержит различные символы и пробелы. Части строки, разделенные пробелами, называются словами. ...

Вывести слова, в которых нет повторяющихся букв и буквы слова упорядочены по алфавиту - C++
Дан текст. Вывести слова, в которых нет повторяющихся букв и буквы слова упорядочены по алфавиту.

В предложении удалить слова, начинающиеся с данной буквы - C++
необходимо проверить начинаются ли слова в предложении с вводимой пользователем буквой,и если это так удалить это слово в предложении.Не...

Удалить из сообщения все слова, начинающиеся с заглавной буквы - C++
Вот код,для нахождения слов с заглавной буквы,а вот удалить не придумал как,знаю,что вроде с помощью операции s.erase(i,n) #include...

5
MrGluck
Модератор
Эксперт CЭксперт С++
7789 / 4827 / 750
Регистрация: 29.11.2010
Сообщений: 13,182
15.11.2016, 16:03 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Непонятна фраза
Цитата Сообщение от Atantares Посмотреть сообщение
удалить и вывести
Сделал так, что выводит оставшиеся после удаления:
Т.к. вы не указали откуда брать слова, решил генерить их программно. Стоит заметить, что в распределении A-z попадаются 6 символов "мусора", но вроде бы никаких ограничений в задании на это нет.
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
#include <algorithm>
#include <cctype>
#include <functional>
#include <iostream>
#include <iterator>
#include <random>
#include <string>
#include <vector>
 
int main()
{
    std::uniform_int_distribution<int> charDist('A', 'z'); // включая 6 символов мусора
    std::uniform_int_distribution<int> lengthDist(1, 15);
    std::default_random_engine gen { std::random_device()() };
    std::function<int()> charGen   = std::bind(charDist,   std::ref(gen));
    std::function<int()> lengthGen = std::bind(lengthDist, std::ref(gen));
 
    const size_t numWords = 7;
    std::vector<std::string> words(numWords);
    std::generate(words.begin(), words.end(), [&charGen, &lengthGen]
    {
        std::string result;
        std::generate_n(std::back_inserter(result), lengthGen(), charGen);
        return result;
    });
 
    std::copy(words.cbegin(), words.cend(), std::ostream_iterator<std::string>(std::cout, " "));
    std::cout << std::endl;
 
    auto lessLength = [](const std::string &lhs, const std::string &rhs)
    {
        return lhs.length() < rhs.length();
    };
    const auto minLength = std::min_element(words.cbegin(), words.cend(), lessLength)->length();
    std::copy_if(words.cbegin(), words.cend(), std::ostream_iterator<std::string>(std::cout, " "),
        [minLength](const std::string &str) { return str.length() == minLength; });
    std::cout << std::endl;
 
    std::remove_copy_if(words.cbegin(), words.cend(), std::ostream_iterator<std::string>(std::cout, " "),
        [](const std::string &str) { return islower(str.front()); });
}
1
Atantares
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 9
15.11.2016, 16:07  [ТС] #3
Извиняюсь, исправил задание.
Задание:
Составить программу, которая выводит на экран слова с наименьшим количеством букв, и отдельно удалить все слова начинающиеся с маленькой буквы и вывести оставшейся слова. (Строку вводить с клавиатуры)

А возможно ли заменить string на char? Я начинающий, со стрингами плохо работаю еще
0
MrGluck
Модератор
Эксперт CЭксперт С++
7789 / 4827 / 750
Регистрация: 29.11.2010
Сообщений: 13,182
15.11.2016, 16:19 #4
Цитата Сообщение от Atantares Посмотреть сообщение
Я начинающий, со стрингами плохо работаю еще
Ну вы поняли
Строки: вывести слова с наименьшим количеством букв; удалить слова, начинающиеся с маленькой буквы
0
MrGluck
Модератор
Эксперт CЭксперт С++
7789 / 4827 / 750
Регистрация: 29.11.2010
Сообщений: 13,182
15.11.2016, 16:42 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
На голых char массивах. Хотя "со стрингами" тут было бы проще
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
#include <cctype>
#include <cstring>
#include <iostream>
#include <sstream>
 
int main()
{
    const size_t N = 128;
    char str[N], word[N];
    std::cin.getline(str, sizeof(str));
    std::istringstream ist(str);
    std::ostringstream ost;
 
    size_t minLen = N;
    while (ist >> word)
    {
        const size_t curLen = strlen(word);
        if (curLen < minLen)
            minLen = curLen;
 
        if (!islower(word[0]))
            ost << word << " ";
    }
 
    std::cout << "Words with smallest length: ";
    ist.clear();
    ist.str(str);
    while (ist >> word)
    {
        const size_t curLen = strlen(word);
        if (minLen == curLen)
            std::cout << word << " ";
    }
 
    std::cout << "\nWords, that are not started from lower char: " << ost.str() << std::endl;
}
0
Atantares
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 9
15.11.2016, 17:52  [ТС] #6
Спасибо, помогли
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2016, 17:52
Привет! Вот еще темы с ответами:

В заданном тексте удалить слова, начинающиеся с заданной буквы - C++
В заданном тексте удалить слова, начинающиеся с заданной буквой. При написании программы нельзя пользоваться стандартными функциями...

В символьной строке удалить все слова, начинающиеся с гласной буквы - C++
В символьной строке удалить все слова, начинающиеся с гласной буквы. Не допускается использование библиотек работы с символьными строками....

В заданном пользователем тексте удалить слова, начинающиеся с указанной буквы - C++
Помогите решить задачу. В заданном пользователем тексте удалить слова, начинающиеся с указанной буквы. нельзя пользоваться стандартными...

Вывести слова, начинающиеся с гласной буквы - C++
Написать программу, которая во вводимом с клавиатуры тексте выберет слова, начинающиеся с гласной буквы, и выведет их на экран. ...


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

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

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