Создайте структуру для сохранения информации про матрицу - 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;
}

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

  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
Похожие ответы