Witam! Probuje zrobic funkcje ktora mnozy macierz przez skalar, ale niestety nie dziala ona. moze ktos moglby pokazac mi gdzie jest blad? case 1 i 2 dziala. bylbym tez wdzieczny gdyby ktos pomogl mi napisac funkcje ktora liczyla by iloczyn skalarny 2och wektorow
#include<stdio.h>
int n,k,n1,k1,p;
void wprowadz_tablice(int wym1, int wym2, double tablica[wym1][wym2]);
void wypisz_tablice(int wym1, int wym2, double tablica[wym1][wym2]);
void suma_macierzy(int wym1, int wym2, double a[wym1][wym2], double b[wym1][wym2], double suma[wym1][wym2]);
void iloczyn_macierzy(int wym1, int wym2, int wym3, double a[wym1][wym2], double b[wym2][wym3], double iloczyn[wym1][wym3]);
void skalowanie_macierzy(int wym1, int wym2, int skal, double a[wym1][wym2], double skalowana[wym1][wym2]);
int main()
{
printf("Jezeli chcesz:\ndodac macierze wcisnij 1 \nmnozyc macierze wcisnij 2\npomnozyc macierz przez skalar wcisnij 3\n");
scanf("%d", &p);
switch(p){
case 1:
printf("Podaj liczbe wierszy pierwszej macierzy\n");
scanf("%d", &n);
printf("Podaj liczbe kolumn pierwszej macierzy\n");
scanf("%d", &k);
printf("Podaj liczbe wierszy drugiej macierzy\n");
scanf("%d", &n1);
printf("Podaj liczbe kolumn drugiej macierzy\n");
scanf("%d", &k1);
if(n!=n1 || k!=k1)
printf("\n\nNie mozna dodac macierzy!");
else{
printf("\n");
double a[n][k];
wprowadz_tablice(n,k,a);
wypisz_tablice(n,k,a);
printf("\n\n");
double b[n1][k1];
wprowadz_tablice(n1,k1,b);
wypisz_tablice(n1,k1,b);
printf("\n\nSuma macierzy wynosi:\n");
double c[n][k];
suma_macierzy(n,k,a,b,c);
wypisz_tablice(n,k,c);}
break;
case 2:
printf("Podaj liczbe wierszy pierwszej macierzy\n");
scanf("%d", &n);
printf("Podaj liczbe kolumn pierwszej macierzy\n");
scanf("%d", &k);
printf("Podaj liczbe wierszy drugiej macierzy\n");
scanf("%d", &n1);
printf("Podaj liczbe kolumn drugiej macierzy\n");
scanf("%d", &k1);
if(k!=n1)
printf("\n\nNie mozna mnozyc tych macierzy!");
else{
printf("\n");
double a[n][k];
wprowadz_tablice(n,k,a);
wypisz_tablice(n,k,a);
printf("\n\n");
double b[n1][k1];
wprowadz_tablice(n1,k1,b);
wypisz_tablice(n1,k1,b);
printf("\n\nIloczyn macierzy wynosi:\n");
double iloczyn[n][k1];
iloczyn_macierzy(n,k,k1,a,b,iloczyn);
wypisz_tablice(n,k1,iloczyn);}
break;
case 3:
printf("Podaj liczbe wierszy macierzy\n");
scanf("%d", &n);
printf("Podaj liczbe kolumn macierzy\n");
scanf("%d", &k);
double a[n][k];
wprowadz_tablice(n,k,a);
wypisz_tablice(n,k,a);
printf("\n\nPodaj skalar\n");
scanf("%lf", &k1);
printf("\nPrzeskalowana macierz wynosi:\n");
double skalowana[n][k];
skalowanie_macierzy(n,k,k1,a,skalowana);
wypisz_tablice(n,k,skalowana);
default: printf("Blad");}
getch();
}
void wprowadz_tablice(int wym1, int wym2, double tablica[wym1][wym2])
{int i,j;
for(i=0; i<wym1; i++)
{for(j=0; j<wym2; j++)
{printf("Podaj wyraz a%d,%d \n", i+1, j+1);
scanf("%lf", &tablica[i][j]);}}}
void wypisz_tablice(int wym1, int wym2, double tablica[wym1][wym2])
{int i,j;
for(i=0; i<wym1; i++)
{printf("\n");
printf("|");
for(j=0; j<wym2; j++)
{printf("%lf ", tablica[i][j]);}printf("|");}}
void suma_macierzy(int wym1, int wym2,double a[wym1][wym2], double b[wym1][wym2], double suma[wym1][wym2])
{int i,j;
for(i=0; i<wym1; i++)
{for(j=0; j<wym2; j++)
{suma[i][j]=a[i][j]+b[i][j];}}}
void iloczyn_macierzy(int wym1, int wym2, int wym3, double a[wym1][wym2], double b[wym2][wym3], double iloczyn[wym1][wym3])
{int i,j,t,s;
for(i=0; i<wym1; i++)
{for(j=0; j<wym3; j++)
{t=0;
for(s=0; s<wym2; s++)
{t=t+a[i][s]*b[s][j];}
iloczyn[i][j]=t;}}}
void skalowanie_macierzy(int wym1, int wym2, int skal, double a[wym1][wym2], double skalowana[wym1][wym2])
{int i,j;
for(i=0; i<wym1; i++)
{for(j=0; j<wym2; j++)
{skalowana[i][j]=a[i][j]*skal;}}}