Создайте структуру для сохранения информации про матрицу - C (СИ)
Формулировка задачи:
Помогите пожайлуста решить проблему: Создайте структуру для сохранения информации про матрицу.
Напишите функции
для выделения памяти под массив, ввод и вывод данных, умножение матриц.
Struct Matr { int m, n; int * ptr; };
Решение задачи: «Создайте структуру для сохранения информации про матрицу»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> struct Matr { int m, n; int * ptr; }; struct Matr* mat_alloc(int m,int n){ struct Matr *ptr; ptr=(struct Matr*)malloc(sizeof(struct Matr)); ptr->ptr=(int*)malloc(sizeof(int)*m*n); ptr->m=m; ptr->n=n; return ptr; } //Mojet vmesto n ->m #define mat_acces(p,x,y) p->ptr[x+y*p->m] void mat_free(struct Matr *p){ if (p) { if (p->ptr) free(p->ptr); free(p); } } void mat_input(struct Matr*p){ int x,y,v; for (y=0;y<p->n;y++) for (x=0;x<p->m;x++){ printf("\nread at %i:%i = ",x,y); scanf("%i",&v); mat_acces(p,x,y)=v; } } void mat_output(struct Matr*p){ int x,y,v; printf("\noutput:\n"); for (y=0;y<p->n;y++){ for (x=0;x<p->m;x++){ v=mat_acces(p,x,y); printf("%i ",v); } printf("\n"); } } int main() { struct Matr *p; int m,n; m=n=3; p=mat_alloc(m,n); mat_input(p); mat_output(p); mat_free(p); printf("\nHello world!\n"); return 0; }
Объяснение кода листинга программы
- Объявление структуры
Matr
с полямиm
,n
иptr
. - Функция
mat_alloc
для выделения памяти под структуруMatr
и её поля. - Макро
mat_acces
для доступа к элементу матрицы по индексамx
иy
. - Функция
mat_free
для освобождения выделенной памяти. - Функция
mat_input
для ввода данных в матрицу с помощью циклаfor
. - Функция
mat_output
для вывода данных из матрицы с помощью циклаfor
. - Главная функция
main
для создания экземпляра структурыMatr
, заполнения его данными, вывода этих данных и последующего освобождения памяти.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д