Матричные вычисления (с использованием подпрограмм) - 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)
{
}