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


#include <stdio.h>      // библиотека ввода/вывода (printf, scanf)
#include <stdlib.h>     // стандартные функции (system и др.)
#include <locale.h>     // setlocale — настройка локали для русских букв
#include <windows.h>    // SetConsoleCP/SetConsoleOutputCP — кодировка консоли

// ============================================================
// ФУНКЦИЯ 1: Счётчик от 9 до 0 через цикл while
// ============================================================
void countdown() {                          // объявляем функцию, void — ничего не возвращает
    int counter = 9;                        // создаём переменную counter = 9
    printf("\nСчётчик от 9 до 0:\n");       // печатаем заголовок, \n — новая строка

    while (counter >= 0) {                  // пока counter >= 0 — повторяем тело цикла
        printf("%d\n", counter);            // печатаем значение counter (%d — целое число)
        counter--;                          // уменьшаем counter на 1 (то же, что counter = counter - 1)
    }                                       // конец цикла while
}                                           // конец функции countdown

// ============================================================
// ФУНКЦИЯ 2: Таблица умножения Пифагора 9×9
// ============================================================
void multiplicationTable() {                            // объявляем функцию
    printf("\nТаблица умножения Пифагора:\n");          // печатаем заголовок

    printf("    ");                                     // 4 пробела — отступ под шапку таблицы
    for (int i = 1; i <= 9; i++) {                      // цикл i от 1 до 9 (шапка — верхние числа)
        printf("%4d", i);                               // печатаем i, занимая 4 позиции
    }                                                   // конец цикла шапки
    printf("\n");                                       // переход на новую строку после шапки

    for (int i = 1; i <= 9; i++) {                      // ВНЕШНИЙ цикл — строки таблицы (i = номер строки)
        printf("%3d ", i);                              // печатаем номер строки слева (3 символа + пробел)

        for (int j = 1; j <= 9; j++) {                  // ВНУТРЕННИЙ цикл — столбцы (j = номер столбца)
            printf("%4d", i * j);                       // печатаем произведение i*j (4 позиции)
        }                                               // конец внутреннего цикла

        printf("\n");                                   // конец строки — переход на новую
    }                                                   // конец внешнего цикла
}                                                       // конец функции multiplicationTable

// ============================================================
// ФУНКЦИЯ 3: Ввод чисел, вывод исходных, сортировка, вывод отсортированных
// ============================================================
void sortNumbers() {                                    // объявляем функцию
    int numbers[10];                                    // массив из 10 целых чисел (ячейки 0..9)
    int count = 0;                                      // счётчик — сколько чисел введёт пользователь

    printf("\nВведите количество чисел (не более 10): "); // приглашение ко вводу
    scanf("%d", &count);                                // читаем число в count (& — адрес переменной)

    if (count > 10) count = 10;                         // защита: если ввели >10 — обрезаем до 10
    if (count < 1) count = 1;                           // защита: если ввели <1 — ставим 1

    printf("Введите %d чисел:\n", count);               // сообщаем, сколько чисел вводить

    for (int i = 0; i < count; i++) {                   // цикл по ячейкам массива от 0 до count-1
        printf("Число %d: ", i + 1);                    // печатаем «Число 1:», «Число 2:»... (i+1, т.к. i с нуля)
        scanf("%d", &numbers[i]);                       // читаем число в ячейку numbers[i]
    }                                                   // конец цикла ввода

    printf("\nИсходная последовательность: ");          // подпись перед выводом исходных чисел

    for (int i = 0; i < count; i++) {                   // цикл по всем введённым числам
        printf("%d ", numbers[i]);                      // печатаем число и пробел
    }                                                   // конец цикла вывода
    printf("\n");                                       // переход на новую строку

    // ---------- СОРТИРОВКА МЕТОДОМ ПУЗЫРЬКА ----------
    for (int i = 0; i < count - 1; i++) {               // внешний цикл: сколько проходов (count-1)
        for (int j = 0; j < count - i - 1; j++) {       // внутренний цикл: сравнение соседних пар
            if (numbers[j] > numbers[j + 1]) {          // если левый больше правого — надо менять
                int temp = numbers[j];                  // сохраняем левое значение во временную переменную
                numbers[j] = numbers[j + 1];            // копируем правое в левую ячейку
                numbers[j + 1] = temp;                  // записываем сохранённое значение в правую ячейку
            }                                           // конец if
        }                                               // конец внутреннего цикла
    }                                                   // конец внешнего цикла

    printf("Отсортированная последовательность: ");     // подпись перед выводом отсортированных

    for (int i = 0; i < count; i++) {                   // цикл по всем элементам массива
        printf("%d ", numbers[i]);                      // печатаем число и пробел
    }                                                   // конец цикла вывода
    printf("\n");                                       // переход на новую строку
}                                                       // конец функции sortNumbers

// ============================================================
// ФУНКЦИЯ 4: Вывод меню команд
// ============================================================
void showMenu() {                                       // объявляем функцию
    printf("\n=== МЕНЮ КОМАНД ===\n");                  // заголовок меню
    printf("1 - Вывести счётчик от 9 до 0\n");          // пункт 1
    printf("2 - Вывести таблицу умножения Пифагора\n"); // пункт 2
    printf("3 - Ввести числа и отсортировать их\n");    // пункт 3
    printf("0 - Выход из программы\n");                 // пункт 0 — выход
    printf("===================\n");                    // нижняя рамка
}                                                       // конец функции showMenu

// ============================================================
// ГЛАВНАЯ ФУНКЦИЯ — точка входа в программу
// ============================================================
int main() {                                            // main возвращает int (код завершения)
    SetConsoleCP(1251);                                 // кодировка ВВОДА консоли — Windows-1251 (для русских букв)
    SetConsoleOutputCP(1251);                           // кодировка ВЫВОДА консоли — Windows-1251
    setlocale(LC_ALL, "Russian");                       // настройка локали на русский язык

    int command;                                        // переменная для хранения введённой команды

    showMenu();                                         // показываем меню один раз при запуске

    while (1) {                                         // БЕСКОНЕЧНЫЙ цикл (1 = истина) — пока не выйдем через return
        printf("\nВведите команду: ");                  // приглашение ко вводу команды
        scanf("%d", &command);                          // читаем команду в переменную command

        switch (command) {                              // переключатель по значению command
            case 1:                                     // если command == 1
                countdown();                            // вызываем функцию счётчика
                break;                                  // выходим из switch (без break «провалимся» в case 2)

            case 2:                                     // если command == 2
                multiplicationTable();                  // вызываем таблицу умножения
                break;                                  // выходим из switch

            case 3:                                     // если command == 3
                sortNumbers();                          // вызываем ввод и сортировку чисел
                break;                                  // выходим из switch

            case 0:                                     // если command == 0
                printf("\nПрограмма завершена.\n");     // прощаемся
                return 0;                               // выход из main → программа заканчивается

            default:                                    // если ни один case не совпал
                printf("\nНеверная команда! Пожалуйста, введите одну из команд: 1, 2, 3 или 0.\n");
                showMenu();                             // снова показываем меню, чтобы напомнить
                break;                                  // выходим из switch
        }                                               // конец switch
    }                                                   // конец while

    return 0;                                           // (недостижимо из-за while(1), но формально нужен)
}                                                       // конец main