Вывести треугольник Паскаля, используя динамический массив. Ошибка "Segmentation fault (core dumped)" - C (СИ)
Формулировка задачи:
Задача такова: вывести треугольник паскаля используя динамический массив. Я написала, но выдает ошибку: "Segmentation fault (core dumped)"
#include <assert.h> #include <stdio.h> int fact (int n) { if (n==0) return 1; else if (n>0) { int i, y=1; for (i=1; i<=n; i++) { y=y*i; } return y; } else return 0; } int main (void) { int i=0, j=0,n,fa; scanf ("%i",&n); int k=n+1; int **coeff; coeff=(int **)malloc(n*sizeof(int *)); printf("hello"); for (i=0; i<n; i++) { coeff[i]=(int *) malloc(n*sizeof(int)); } for (i=0; i<=n; i++) for (j=0; j<=i; j++) { coeff[i][j]=0; } printf("tr1 %d", fact(5)); for (i=0; i<=n; i++) for (j=0; j<=i; j++) { coeff[i][j]=fact(i); fa=(fact(j)*fact(i-j)); coeff[i][j]/=fa; } for (i=0; i<=n; i++) for (j=0; j<=n; j++) printf ("%d", coeff[i][j]); for (i=0; i<n; i++) free (coeff[i]); free(coeff); return 0; }
Решение задачи: «Вывести треугольник Паскаля, используя динамический массив. Ошибка "Segmentation fault (core dumped)"»
textual
Листинг программы
#include <assert.h> #include <stdio.h> #include <stdlib.h> int fact (int n) { if (n==0) return 1; else if (n>0) { int i, y=1; for (i=1; i<=n; i++) { y=y*i; } return y; } else return 0; } int main (void) { int i=0, j=0,n,fa; scanf ("%i",&n); int k=n+1; int **coeff; coeff=(int **)malloc(n*sizeof(int *)); printf("hello"); for (i=0; i<n; i++) { coeff[i]=(int *) malloc(n*sizeof(int)); } for (i=0; i<n; i++) // << for (j=0; j<i; j++) { // << coeff[i][j]=0; } printf("tr1 %d", fact(5)); for (i=0; i<n; i++) // << for (j=0; j<i; j++) { // << coeff[i][j]=fact(i); fa=(fact(j)*fact(i-j)); coeff[i][j]/=fa; } for (i=0; i<n; i++){ // << for (j=0; j<n; j++) // << printf ("%d ", coeff[i][j]); printf("\n"); } for (i=0; i<n; i++) free (coeff[i]); free(coeff); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: assert.h, printf.h и stdlib.h.
- Определяется функция fact, которая вычисляет факториал числа n.
- В функции main создается динамический массив coeff размером n+1 для хранения n*n матрицы.
- В цикле for заполняются все элементы матрицы coeff нулями.
- Вычисляется и выводится на экран факториал числа 5.
- В цикле for для каждого элемента матрицы coeff вычисляется его значение как факториал соответствующего числа.
- Для каждого элемента наружного цикла вычисляется значение факториала соответствующего числа и результат делится на значение факториала внутреннего цикла.
- Все элементы матрицы выводятся на экран через пробел.
- Все динамические памяти освобождаются.
- Функция main возвращает 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д