Матричные вычисления (с использованием подпрограмм) - 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) { }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д