Создайте структуру для сохранения информации про матрицу - C (СИ)

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

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

Помогите пожайлуста решить проблему: Создайте структуру для сохранения информации про матрицу.
Листинг программы
  1. Struct Matr {
  2. int m, n;
  3. int * ptr;
  4. };
Напишите функции для выделения памяти под массив, ввод и вывод данных, умножение матриц.

Решение задачи: «Создайте структуру для сохранения информации про матрицу»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct Matr {
  5. int m, n;
  6. int * ptr;
  7. };
  8. struct Matr* mat_alloc(int m,int n){
  9.    struct Matr *ptr;
  10.    ptr=(struct Matr*)malloc(sizeof(struct Matr));
  11.    ptr->ptr=(int*)malloc(sizeof(int)*m*n);
  12.    ptr->m=m;
  13.    ptr->n=n;
  14.     return ptr;
  15. }
  16. //Mojet vmesto n ->m
  17. #define mat_acces(p,x,y) p->ptr[x+y*p->m]
  18.  
  19. void mat_free(struct Matr *p){
  20.  
  21.     if (p) {
  22.         if (p->ptr) free(p->ptr);
  23.         free(p);
  24.     }
  25.  
  26.     }
  27. void mat_input(struct Matr*p){
  28.     int x,y,v;
  29.     for (y=0;y<p->n;y++)
  30.         for (x=0;x<p->m;x++){
  31.             printf("\nread at %i:%i = ",x,y);
  32.             scanf("%i",&v);
  33.             mat_acces(p,x,y)=v;
  34.             }
  35.     }
  36. void mat_output(struct Matr*p){
  37.     int x,y,v;
  38.     printf("\noutput:\n");
  39.     for (y=0;y<p->n;y++){
  40.         for (x=0;x<p->m;x++){
  41.             v=mat_acces(p,x,y);
  42.             printf("%i ",v);
  43.             }
  44.         printf("\n");
  45.     }
  46.     }
  47. int main()
  48. {
  49.     struct Matr *p;
  50.     int m,n;
  51.     m=n=3;
  52.     p=mat_alloc(m,n);
  53.     mat_input(p);
  54.     mat_output(p);
  55.     mat_free(p);
  56.     printf("\nHello world!\n");
  57.     return 0;
  58. }

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

  1. Объявление структуры Matr с полями m, n и ptr.
  2. Функция mat_alloc для выделения памяти под структуру Matr и её поля.
  3. Макро mat_acces для доступа к элементу матрицы по индексам x и y.
  4. Функция mat_free для освобождения выделенной памяти.
  5. Функция mat_input для ввода данных в матрицу с помощью цикла for.
  6. Функция mat_output для вывода данных из матрицы с помощью цикла for.
  7. Главная функция main для создания экземпляра структуры Matr, заполнения его данными, вывода этих данных и последующего освобождения памяти.

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


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

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

9   голосов , оценка 4.111 из 5

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

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

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