Матричные вычисления (с использованием подпрограмм) - C (СИ)

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

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

Доброго времени суток Киберфорум, задание звучит следующим образом:Написать программу,которая высчитывает матрицу по формуле-С=2(A-B)-4(B-AB) A и В задаются с клавиатуры.В программе должно быть 3 подпрограммы:ввод данных,разность массивов и произведение число на массив.Мои знания языка Си закончились на вот этом коде программы,буду очень благодарен,если поможете мне!)
#include 
#include 
#include 
#include 
 
float** read_m( char S,float *A);
float razn(const char N,const float **A,float **B);
float pr(const char N,const float **A,float **B);
int main()
{
    int i,j;
    float **A,**B,**C,**D,E[i][j],**K,**L,**G;
    char NA,NB;
    NA=read_m('A',&A);
    NA=read_m('B',&B);
    if(NA==NB)
    {
        D=razn(NA,A,B);
        for(i=0;i\nРезультат:\n");
for(i=0;i\n");
}
    }
    else  
    printf("Некорректные данные");
    return 0;
}
 
**float read_m( char S,float ***M)
{
unsigned int i, j, N;
printf(" Введите размерность квадратной матрицы- %с",S);
scanf("%d",&N);
M=(float**)malloc(N*sizeof(float*));
for(i=0;i

		

Решение задачи: «Матричные вычисления (с использованием подпрограмм)»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <math.h>
#include <stdlib.h>
 
 
typedef struct
{
    float **data;
    int sizeN;
}matrix;
 
//---------------Служебные методы------------------
void newMatrix(matrix * mt,int sizeN)   //выделяем память
{
    mt->sizeN = sizeN;
    mt->data = (float**)malloc(sizeof(float*)*sizeN);
    for(int i=0;i<sizeN;++i)
        mt->data[i] = (float*)malloc(sizeof(float)*sizeN);
}
void freeMatrix(matrix * mt)            //очищаем память
{
    for(int i=0;i<mt->sizeN;++i)
        free(mt->data[i]);
    free(mt->data);
}
//---------------Интерфейс---------------------------
void  read_m (char name,matrix *mt);
void  print_m(char name,matrix *mt);
void  razn   (matrix *m1,matrix *m2,matrix *out);
void  multi  (matrix *m1,matrix *m2,matrix *out);
//---------------------------------------------------
void getMatrixC(matrix *m1,matrix *m2,matrix *out);
 
int main()
{
    system("chcp 1251");
    matrix A,B;
 
    read_m('A',&A);
    read_m('B',&B);
 
    print_m('A',&A);
    print_m('B',&B);
 
    if(A.sizeN==B.sizeN)
    {
 
    }else
    {
        printf("Некорректные данные");
    }
    freeMatrix(&A);
    freeMatrix(&B);
    return 0;
}
 
void  read_m(char name,matrix *mt)
{
    int sizeN;
    printf("Введите размерность квадратной матрицы - %c ",name);
    scanf("%d",&sizeN);
    //Achtung!
    //Делаю предположение, что пользователь не дурак и введет нормальное число
    newMatrix(mt,sizeN);
 
    for(int i=0;i<sizeN;i++)//строки
        for(int j=0; j<sizeN; j++)//столбцы
        {
             printf("Введите элемент-%c[%d][%d]-", name, i+1, j+1);
             scanf("%f",&mt->data[i][j]);
        }
}
void  print_m(char name,matrix *mt)
{
    printf("Mатрица %c\n",name);
    int n= mt->sizeN;
    for(int i=0;i<n;++i)
    {
        printf("%d) ",i+1);
        for(int j=0;j<n;++j)
           printf("%3.2f ",mt->data[i][j]);
        printf("\n");
    }
}
void  razn   (matrix *m1,matrix *m2,matrix *out)
{
 
}
void  multi  (matrix *m1,matrix *m2,matrix *out)
{
 
}
void getMatrixC(matrix *m1,matrix *m2,matrix *out)
{
 
}

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


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

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

12   голосов , оценка 3.917 из 5
Похожие ответы