Блог для маленьких школьников и их родителей
ШколаЛа

Рядок складається із груп цифр, розділених довільною кількістю пробілів. Знайти та вивести на екран…

Автор:
Предмет: Информатика
Уровень: студенческий

Рядок складається із груп цифр, розділених довільною кількістю

пробілів. Знайти та вивести на екран найкоротшу групу та

кількість груп такої довжини.

С++

Ответов к вопросу: 1
  • artem47HD
    12.09.2024 | 20:49

    Ответ:

    Объяснение:
    #include <iostream>
    #include <string>
    #include <unordered_map>

    int main() {
    std::string line;
    std::unordered_map<int, int> group_lengths;
    int current_group_length = 0;

    std::getline(std::cin, line);

    for (char c : line) {
    if (std::isdigit(c)) {
    // Якщо це цифра, збільшуємо довжину поточної групи
    current_group_length++;
    } else if (current_group_length > 0) {
    // Якщо це не цифра і довжина поточної групи більша ніж 0,
    // зберігаємо її у словнику і обнуляємо довжину поточної групи
    group_lengths[current_group_length]++;
    current_group_length = 0;
    }
    }

    // Якщо є поточна група у рядку, яка не була збережена у словнику
    // (наприклад, рядок закінчувався цифрою), то зберігаємо її у словнику
    if (current_group_length > 0) {
    group_lengths[current_group_length]++;
    }

    // Шукаємо найкоротшу групу
    int min_length = line.length();
    for (const auto& [length, count] : group_lengths) {
    if (length < min_length) {
    min_length = length;
    }
    }

    // Виводимо найкоротшу групу і кількість таких груп
    std::cout << «Shortest group length: » << min_length << std::endl;
    std::cout << «Number of groups with this length: »
    << group_lengths[min_length] << std::endl;

    return 0;
    }

Ответить на вопрос:
:p :-p 8) 8-) :lol: =( :( :-( :8 ;) ;-) :(( :o:
Нажимая на кнопку я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.