@jltvkfs

Как сделать так, чтобы если есть несколько слов на заданную букву, вывести их по длине(неважно убывание или возрастание)?

Дана строка из символов латинского алфавита. Вставьте пробел перед каждой заглавной буквой, перед первой буквой пробел добавлять не надо. Распечатать преобразованную строку. Разработать функцию, которая будет находить в этой строке слова на заданную букву. Если таких слов будет найдено несколько, отсортировать найденные слова по их длине, разработав соответствующую функцию. Ниже представлен рекомендуемый вид диалога во время работы программы. Данные, вводимые пользователем, выделены жирным шрифтом. Введите строку символов латинского алфавита: >AtTimesYouMayWantToReadDataFromTheKeyBoard
Полученная строка: At Times You May Want To Read Data From The Key Board

#include <iostream> 
#include <stdio.h> 
#include <cmath> 
#include <cstring> 
using namespace std;
void space(char str[])
{
    int len = strlen(str);
    for (int i = 1; i < len; i++) {
        if (str[i] > 64 and str[i] < 91) {
            cout << ' ';
        }
        cout << str[i];
    };
}
void check(char str[])
{
    int len = strlen(str);
    char a;
    cin >> a;
    cout << "Слова на заданную букву :";
    for (int i = 0; i < len; i++) {
        if (str[i] == a) {
            cout << str[i];
            for (int j = i + 1; j < len; j++) {
                if (str[j] > 64 and str[j] < 91) {
                    break;
                }
                cout << str[j];
            }
            cout << ' ';
        }
    }
}
int main()
{
    setlocale(LC_CTYPE, "rus");
    char str[100];
    gets_s(str);
    cout << str[0];
    space(str);
    cout << "\nЗадайте любую латинскую заглавную букву: ";
    check(str);
    return 0;
}
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
Можно так
std::vector<std::string> words; // вектор со словами, начинающимися на одну букву разной длины
    words.push_back("A1");
    words.push_back("A333");
    words.push_back("A22");

    // сортировка с кастомным компаратором по возрастанию длины слов
    std::sort(words.begin(), words.end(), 
    [](const std::string& s1, const std::string& s2)
    {
        return s1.length() < s2.length();
    });
    
    // вывод отсортированного вектора
    for(auto&& s: words)
        std::cout << s << " ";
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы