Zdravím všechny
Potřeboval bych pomoct s programem. Potřebuji vynásobit 2 matice, ale ppořed mi to nefunguje mam v tom trochu chaos dekuji vsem za pomoc.
main.c
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
int main()
{
Tmatice matice;
Tmatice matrix;
Tmatice mat_vys;
matrix=read2();
matice=read();
print(matice);
printf("\n");
print(matrix);
printf("\n");
soucin(matice,matrix);
smazat(matice);
printm(mat_vys);
return 0;
}
header.h
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
typedef unsigned int uint;
typedef struct matice
{
double **m;
int radky;
int sloupce;
} Tmatice;
Tmatice init(int radky,int sloupce);
Tmatice read();
Tmatice read2();
Tmatice soucin();
void print(Tmatice m);
void printm(Tmatice m);
void smazat(Tmatice m);
#endif // POLE_H_INCLUDED
fce.c
#include "header.h"
#include <stdio.h>
#include <stdlib.h>
Tmatice init(int radky,int sloupce)
{
double**m=malloc(radky*sizeof(double*));
for(int i=0; i<radky; i++)
{
m[i]=malloc(sloupce*sizeof(double));
}
Tmatice matice= {.m=m,.radky=radky,.sloupce=sloupce};
return matice;
}
Tmatice read2()
{
int radky,sloupce;
FILE* f = fopen("matice2.txt","r");
if(f==NULL)
printf("Nepodarilo se otevrit.");
if(fscanf(f,"%d %d",&radky,&sloupce)!=2||radky<1||sloupce<1)
printf("Chyba v parametrech");
Tmatice matrix = init(radky,sloupce);
for(int r=0; r<radky; r++)
{
for(int s=0; s<sloupce; s++)
fscanf(f,"%lf",&matrix.m[r][s]);
}
return matrix;
}
Tmatice read()
{
int radky,sloupce;
FILE* f = fopen("matice.txt","r");
if(f==NULL)
printf("Nepodarilo se otevrit.");
if(fscanf(f,"%d %d",&radky,&sloupce)!=2||radky<1||sloupce<1)
printf("Chyba v parametrech");
Tmatice m = init(radky,sloupce);
for(int r=0; r<radky; r++)
{
for(int s=0; s<sloupce; s++)
fscanf(f,"%lf",&m.m[r][s]);
}
return m;
}
void print(Tmatice m)
{
for(int radky=0; radky<m.radky; radky++)
{
for(int sloupce=0; sloupce<m.sloupce; sloupce++)
{
printf("%g ",m.m[radky][sloupce]);
}
printf("\n");
}
}
void printm(Tmatice m)
{
for(int radky=0; radky<m.radky; radky++)
{
for(int sloupce=0; sloupce<m.sloupce; sloupce++)
{
printf("%g ",m.m[radky][sloupce]);
}
printf("\n");
}
}
Tmatice soucin(Tmatice m)
{
Tmatice mat_vys = init(m.radky,m.sloupce);
for(int r; r<m.radky;r++)
{
for(int s; s<m.sloupce;s++)
{
mat_vys.m[r][s]=mat_vys.m[r][s] + m.m[r][s]*m.m[s][r];
}
}
return mat_vys;
}
void smazat(Tmatice m)
{
for(int i; i< m.radky;i++)
free(m.m[i]);
}
Dekuji za rady.