Вывод результата
В этом шаге мы улучшим нашу программу вычисления перестановок, добавив более подробный вывод и параметры форматирования.
Изменим файл permutations.c, чтобы улучшить представление результата:
cd ~/project
nano permutations.c
Обновим код с улучшенным выводом результата:
#include <stdio.h>
// Функция для вычисления факториала
unsigned long long factorial(int num) {
unsigned long long result = 1;
for (int i = 1; i <= num; i++) {
result *= i;
}
return result;
}
// Функция для вычисления перестановки (nPr)
unsigned long long permutation(int n, int r) {
// Проверка на некорректный ввод
if (r > n) {
printf("Ошибка: r не может быть больше n\n");
return 0;
}
// Вычисление nPr по формуле: n! / (n-r)!
return factorial(n) / factorial(n - r);
}
// Функция для вывода подробного объяснения перестановки
void printPermutationDetails(int n, int r, unsigned long long result) {
printf("\n--- Подробности вычисления перестановки ---\n");
printf("Общее количество элементов (n): %d\n", n);
printf("Количество выбранных элементов (r): %d\n", r);
printf("Вычисление: %d P %d = %d! / (%d - %d)!\n", n, r, n, n, r);
printf("Результат: %llu возможных различных перестановок\n", result);
printf("----------------------------------------\n");
}
int main() {
int n, r;
printf("Калькулятор перестановок (nPr)\n");
printf("Введите общее количество элементов (n): ");
scanf("%d", &n);
printf("Введите количество элементов для выбора (r): ");
scanf("%d", &r);
unsigned long long result = permutation(n, r);
if (result > 0) {
printPermutationDetails(n, r, result);
}
return 0;
}
Компилируем и запускаем программу:
gcc permutations.c -o permutations
./permutations
Пример вывода:
Калькулятор перестановок (nPr)
Введите общее количество элементов (n): 5
Введите количество элементов для выбора (r): 3
--- Подробности вычисления перестановки ---
Общее количество элементов (n): 5
Количество выбранных элементов (r): 3
Вычисление: 5 P 3 = 5! / (5 - 3)!
Результат: 60 возможных различных перестановок
----------------------------------------
Основные улучшения:
- Добавлена отдельная функция
printPermutationDetails().
- Включен более информативный вывод о вычислении.
- Объяснена формула перестановки и результат.
- Улуччен пользовательский интерфейс с заголовком и подробным объяснением.