Генерация строки треугольника Паскаля на C

CBeginner
Практиковаться сейчас

Введение

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

Ввод номера строки

В этом шаге вы узнаете, как ввести номер строки для генерации строки треугольника Паскаля с помощью языка C. Мы создадим программу, которая запросит у пользователя ввод желаемого номера строки.

Сначала создадим новый файл C в каталоге проекта:

cd ~/project
nano pascal_triangle.c

Теперь добавим следующий код для ввода номера строки:

#include <stdio.h>

int main() {
    int rowNumber;

    printf("Введите номер строки для треугольника Паскаля: ");
    scanf("%d", &rowNumber);

    printf("Вы ввели номер строки: %d\n", rowNumber);

    return 0;
}

Теперь скомпилируем и запустим программу:

gcc pascal_triangle.c -o pascal_triangle
./pascal_triangle

Пример вывода:

Введите номер строки для треугольника Паскаля: 5
Вы ввели номер строки: 5

Описание кода:

  • #include <stdio.h> подключает стандартную библиотеку ввода/вывода
  • scanf() считывает целое число от пользователя
  • printf() отображает введенный номер строки
  • Программа проверяет базовый ввод пользователя для номера строки

Ключевые моменты:

  • Мы используем scanf() для считывания целого числа
  • Номер строки будет использован для генерации конкретной строки треугольника Паскаля
  • Проверка ввода будет добавлена на последующих этапах

Вычисление биномиальных коэффициентов

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

Откройте существующий файл:

cd ~/project
nano pascal_triangle.c

Замените предыдущий код следующим реализацией:

#include <stdio.h>

// Функция для вычисления биномиального коэффициента
int binomialCoeff(int n, int k) {
    // Базовые случаи
    if (k == 0 || k == n)
        return 1;

    // Рекурсивное вычисление, используя свойство треугольника Паскаля
    return binomialCoeff(n-1, k-1) + binomialCoeff(n-1, k);
}

int main() {
    int rowNumber;

    printf("Введите номер строки для треугольника Паскаля: ");
    scanf("%d", &rowNumber);

    printf("Биномиальные коэффициенты для строки %d:\n", rowNumber);

    // Генерация и вывод коэффициентов
    for (int k = 0; k < rowNumber; k++) {
        printf("%d ", binomialCoeff(rowNumber - 1, k));
    }
    printf("\n");

    return 0;
}

Скомпилируйте и запустите программу:

gcc pascal_triangle.c -o pascal_triangle
./pascal_triangle

Пример вывода:

Введите номер строки для треугольника Паскаля: 5
Биномиальные коэффициенты для строки 5:
1 4 6 4 1

Описание кода:

  • Функция binomialCoeff() рекурсивно вычисляет биномиальные коэффициенты
  • Базовые случаи обрабатывают первые и последние элементы каждой строки
  • Функция использует рекурсивное свойство треугольника Паскаля
  • Вложенный цикл генерирует коэффициенты для заданной строки

Ключевые моменты:

  • Биномиальные коэффициенты представляют числа в каждой строке треугольника Паскаля
  • Рекурсивное вычисление демонстрирует математическую взаимосвязь
  • Время выполнения экспоненциально из-за рекурсивного подхода

Вывод строки

В этом шаге вы улучшите программу для треугольника Паскаля, чтобы отформатировать и вывести строку с правильным отступом и выравниванием, сделав вывод визуально привлекательным.

Откройте существующий файл:

cd ~/project
nano pascal_triangle.c

Замените предыдущий код следующим:

#include <stdio.h>

// Функция для вычисления биномиального коэффициента
int binomialCoeff(int n, int k) {
    if (k == 0 || k == n)
        return 1;
    return binomialCoeff(n-1, k-1) + binomialCoeff(n-1, k);
}

// Функция для вывода строки треугольника Паскаля
void printPascalRow(int rowNumber) {
    // Вывод начальных пробелов для выравнивания
    for (int space = 0; space < rowNumber; space++) {
        printf("   ");
    }

    // Генерация и вывод коэффициентов
    for (int k = 0; k < rowNumber; k++) {
        int coefficient = binomialCoeff(rowNumber - 1, k);
        printf("%4d ", coefficient);
    }
    printf("\n");
}

int main() {
    int rowNumber;

    printf("Введите номер строки для треугольника Паскаля (1-10): ");
    scanf("%d", &rowNumber);

    if (rowNumber < 1 || rowNumber > 10) {
        printf("Пожалуйста, введите номер строки от 1 до 10.\n");
        return 1;
    }

    printf("Строка треугольника Паскаля %d:\n", rowNumber);

    // Вывод указанной строки
    printPascalRow(rowNumber);

    return 0;
}

Скомпилируйте и запустите программу:

gcc pascal_triangle.c -o pascal_triangle
./pascal_triangle

Пример вывода:

Введите номер строки для треугольника Паскаля (1-10): 5
Строка треугольника Паскаля 5:
            1    4    6    4    1

Описание кода:

  • Функция printPascalRow() обрабатывает форматирование строки
  • Добавлены начальные пробелы для визуального выравнивания
  • Используется спецификатор формата %4d для постоянной ширины столбца
  • Добавлена проверка ввода для ограничения номеров строк
  • Выводит всю строку с правильным отступом

Ключевые моменты:

  • Форматирование улучшает читаемость треугольника Паскаля
  • Проверка ввода предотвращает неожиданное поведение
  • Демонстрирует основные методы форматирования в C

Резюме

В этом лабораторном практикуме вы научитесь вводить номер строки для генерации строки треугольника Паскаля с помощью программирования на языке C и вычислять биномиальные коэффициенты для вывода этой строки. Сначала вы создадите программу, которая запросит у пользователя желаемый номер строки. Затем вы реализуете функцию для вычисления биномиальных коэффициентов, используя рекурсивное свойство треугольника Паскаля. Наконец, вы выведете строку треугольника Паскаля на основе вычисленных коэффициентов. Ключевые моменты, охваченные в этом практикуме, включают использование scanf() для чтения входных данных пользователя, реализацию рекурсивной функции для вычисления биномиальных коэффициентов и вывод сгенерированной строки.