Загрузка данных


#include <iostream>

using namespace std;

// Предусловие: передаваемое целое число n должно быть инициализировано.
// Функция проверяет число по заданному критерию (является ли оно нечетным) 
// и возвращает true, если условие выполняется, и false в противном случае.
bool out_number(int n)
{
    // Постусловие: возвращается логическое значение (true/false) 
    // в зависимости от того, удовлетворяет ли число n условию задачи.
    return (n % 2 != 0);
}

int main()
{
    // Предусловие: вывод русскоязычного текста в консоль с помощью cout.
    setlocale(LC_ALL, "Russian");

    int n;           // Объявление переменной для считывания текущего числа
    int k = 0;       // Счетчик количества найденных нечетных чисел
    long long P = 1; // Переменная для вычисления произведения нечетных чисел
    int j = 0;       // Счетчик общего порядкового номера числа в последовательности
    int Num = 0;     // Переменная для хранения номера четвертого нечетного числа

    // Вывод подсказки пользователю через cout
    cout << "Введите числа через пробел (для завершения ввода нажмите Ctrl+Z, а затем Enter):\n";

    // Используем do-while (постусловие), чтобы цикл гарантированно сработал один раз
    do
    {
        // Считывание очередного числа из консоли через cin. 
        // Цикл будет запрашивать ввод, пока пользователь не введет неверный тип данных или символ конца файла (Ctrl+Z).
        if (!(cin >> n)) {
            break;
        }
        
        // Увеличение общего счетчика позиции текущего числа
        j++;

        // Вызов функции с типом bool для проверки числа
        bool b = out_number(n);

        // Если функция вернула true (число удовлетворяет условию)
        if (b == true)
        {
            k++;         // Увеличение счетчика нечетных чисел
            P *= n;      // Накопление произведения нечетных чисел

            // Проверка: если встретилось четвертое нечетное число
            if (k == 4)
            {
                Num = j; // Запоминаем его порядковый номер в общей последовательности
            }
        }

    } while (true); // Постусловие выхода реализовано через прерывание ввода

    // Сброс состояния потока (нужно на случай, если ввод завершился через Ctrl+Z)
    cin.clear();

    // Если в последовательности было хотя бы одно нечетное число
    if (k > 0)
    {
        cout << "Количество нечетных чисел: " << k << ", произведение нечетных чисел: " << P << "\n";
    }
    else // Если нечетных чисел не оказалось вовсе
    {
        cout << "Нечетных чисел в последовательности нет.\n";
    }

    // Если четвертое нечетное число было найдено
    if (Num != 0)
    {
        cout << "Номер в последовательности четвертого нечетного числа: " << Num << "\n";
    }
    else // Если найдено меньше 4 нечетных чисел
    {
        cout << "Нечетных чисел меньше 4\n";
    }

    // Задержка экрана консоли перед закрытием
    system("pause");
    return 0;
}