Witam
Chce napisac funkcję, która mnozy macierz przez liczbę, a później za pomocą innej funkcji ją wypisać. Napisałam już funkcję, ale po wyswietleniu przemnożonej przez liczbę macierzy, wyskakują same zera. Co robię źle?
Moj kod:
#include <stdio.h>##
#include <stdlib.h>##
typedef struct matrix
{
size_t nrow;
size_t ncol;
double **tab;
}matrix;
matrix new_matrix (size_t rows, size_t cols, double array[rows][cols])
{
matrix macierz;
macierz.nrow=rows;
macierz.ncol=cols;
macierz.tab=(double**)malloc(sizeof(double)*macierz.ncol);
for(int i=0; i<macierz.nrow; i++)
{
macierz.tab[i]=(double*) malloc (sizeof(double)*macierz.ncol);
}
for(int i=0; i<macierz.nrow; i++)
{
for(int j=0; j<macierz.ncol; j++)
{
macierz.tab[i][j]=array[i][j];
}
}
return macierz;
}
void print_matrix (matrix a, FILE *stream, char sep)
{
for(int i=0; i<a.nrow;i++)
{
for(int j=0; j<a.ncol; j++)
{
fprintf(stream, "%lf%c", a.tab[i][j], sep);
}
fprintf(stream, "\n");
}
}
matrix multiply_matrix (matrix a, double b)
{
a.tab=(double**)malloc(sizeof(double)*a.ncol);
for(int i=0; i<a.nrow; i++)
{
a.tab[i]=(double*) malloc (sizeof(double)*a.ncol);
}
for(int i=0; i<a.nrow; i++)
{
for(int j=0; j<a.ncol; j++)
{
a.tab[i][j]=a.tab[i][j]*b;
}
}
return a;
}
int main(void)
{
matrix a;
matrix b;
double t[2][2]={{1,2}, {3,4}};
a=new_matrix(2,2,t);
b=multiply_matrix(a,4);
print_matrix(b,stdout,'\t');
fprintf(stdout,"\n");
return 0;
}```