Программа зацикливается при вводе матрицы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Помогите, в программе какая то ошибка, не могу найти. Почему-то зацикливается при вводе матрицы.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void InitMem(int** A,int M, int N)
  4. {
  5. int x;
  6. A = (int **) calloc(M,sizeof (int *));;
  7. for(x = 0; x < M; x++)
  8. A[x] = (int *) calloc(N, sizeof (int));
  9. return A;
  10. }
  11. void FreeMem(int** A, int M)
  12. {
  13. int i ;
  14. for(i= 0; i < M; i++)
  15. free(A[i]);
  16. free(A);
  17. }
  18. void ReadMatr1 (int *A[], int M, int N)
  19. {
  20. int i, j;
  21. for(i=0; i<M; i++)
  22. {
  23. for(j=0; j<N; j++)
  24. scanf ("%d", &A[i][j]);
  25. }
  26. return 0;
  27. }
  28. void WriteMatr(int *A[], int M, int N)
  29. {
  30. int i,j;
  31. for(i=0; i<M; i++)
  32. {
  33. for(j=0; j<N; j++)
  34. printf("%i ",A[i][j]);
  35. printf(" \n");
  36. }
  37. printf("\n");
  38. return 0;
  39. }
  40. void main()
  41. {
  42. int i,j, **A;
  43. int M, N;
  44. printf("vved M-stroki ");
  45. scanf("%d",&M);
  46. printf("vved N-stolbtci ");
  47. scanf("%d",&N);
  48. InitMem(A,M,N);
  49. if (A!=NULL )
  50. {
  51. printf ("vvedite matritcu a: \n");
  52. ReadMatr1(A,M,N);
  53. WriteMatr(A, M, N);
  54. FreeMem(A,M);
  55. }
  56. else printf("not mem");
  57. }

Решение задачи: «Программа зацикливается при вводе матрицы»

textual
Листинг программы
  1. int** InitMem(int M, int N)
  2. {
  3.     int x, **A;
  4.     A = (int **) calloc(M,sizeof (int *));;
  5.     for(x = 0; x < M; x++)
  6.         A[x] = (int *) calloc(N, sizeof (int));
  7.     return A;
  8. }

Объяснение кода листинга программы

В данном коде представлена функция InitMem, которая занимается инициализацией динамической памяти для двумерного массива (матрицы) целых чисел.

  1. В первой строке объявлены две переменные: x и A.
  2. Переменная A инициализируется как указатель на указатель на целочисленную переменную.
  3. Затем, с помощью функции calloc, выделяется память под массив указателей на целочисленные переменные.
  4. В цикле for происходит инициализация каждого указателя в массиве A с помощью функции calloc.
  5. В конце функции, возвращается инициализированный массив A.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы