Программа зацикливается при вводе матрицы - C (СИ)
Формулировка задачи:
Здравствуйте. Помогите, в программе какая то ошибка, не могу найти. Почему-то зацикливается при вводе матрицы.
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- void InitMem(int** A,int M, int N)
- {
- int x;
- A = (int **) calloc(M,sizeof (int *));;
- for(x = 0; x < M; x++)
- A[x] = (int *) calloc(N, sizeof (int));
- return A;
- }
- void FreeMem(int** A, int M)
- {
- int i ;
- for(i= 0; i < M; i++)
- free(A[i]);
- free(A);
- }
- void ReadMatr1 (int *A[], int M, int N)
- {
- int i, j;
- for(i=0; i<M; i++)
- {
- for(j=0; j<N; j++)
- scanf ("%d", &A[i][j]);
- }
- return 0;
- }
- void WriteMatr(int *A[], int M, int N)
- {
- int i,j;
- for(i=0; i<M; i++)
- {
- for(j=0; j<N; j++)
- printf("%i ",A[i][j]);
- printf(" \n");
- }
- printf("\n");
- return 0;
- }
- void main()
- {
- int i,j, **A;
- int M, N;
- printf("vved M-stroki ");
- scanf("%d",&M);
- printf("vved N-stolbtci ");
- scanf("%d",&N);
- InitMem(A,M,N);
- if (A!=NULL )
- {
- printf ("vvedite matritcu a: \n");
- ReadMatr1(A,M,N);
- WriteMatr(A, M, N);
- FreeMem(A,M);
- }
- else printf("not mem");
- }
Решение задачи: «Программа зацикливается при вводе матрицы»
textual
Листинг программы
- int** InitMem(int M, int N)
- {
- int x, **A;
- A = (int **) calloc(M,sizeof (int *));;
- for(x = 0; x < M; x++)
- A[x] = (int *) calloc(N, sizeof (int));
- return A;
- }
Объяснение кода листинга программы
В данном коде представлена функция InitMem
, которая занимается инициализацией динамической памяти для двумерного массива (матрицы) целых чисел.
- В первой строке объявлены две переменные:
x
иA
. - Переменная
A
инициализируется как указатель на указатель на целочисленную переменную. - Затем, с помощью функции
calloc
, выделяется память под массив указателей на целочисленные переменные. - В цикле
for
происходит инициализация каждого указателя в массивеA
с помощью функцииcalloc
. - В конце функции, возвращается инициализированный массив
A
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д