mnozenie macierzy blad

0
#include <stdio.h>

void wczytaj(int tab1[10][10], int* sz1,int* wy1)
{
    printf("Podaj wysokosc tablicy :");
    scanf("%d",wy1);
    printf("Podaj szerokosc tablicy :");
    scanf("%d",sz1);

    for(int i=0; i<*wy1; i++)
    {
        for(int j=0; j<*sz1; j++)
            scanf("%d",&tab1[i][j]);
    }


}


void pokaz(int tab1[10][10], int sz1,int wy1)

{

    for(int i=0; i<wy1; i++)
    {
        for(int j=0; j<sz1; j++)
            printf("%d ",tab1[i][j]);
        printf("\n");
    }


}

void pomnoz(int tab1[10][10],int tab2[10][10],int tab3[10][10], int sz1,int wy1)
{

    for (int w = 0; w < sz1; w++) {
      for ( int k = 0; k < wy1; k++) {
        for ( int s = 0; s < sz1; s++) {
          tab3[w][k]+=  tab1[w][s]*tab2[s][k];
        }
}
int main()
{
    int tab1[10][10], sz, wy;
    int tab2[10][10], sz2, wy2;
    int tab3[10][10], sz3, wy3;



    printf("Pierwsza tablica\n");
    wczytaj(tab1,&sz1,&wy1);
    printf("Druga tablica\n");
    wczytaj1(tab2,&sz2,&wy2);
    if (sz1!=wy2)
    {
         return 0;
    }

    pomnoz(tab1,tab2,tab3,sz1,wy1);
    printf("wynik:\n");
    pokaz(tab1,sz1,wy1);
    pokaz(tab2,sz2,wy2);
    pokaz(tab3,sz3,wy3);


    return 0;
}
0

jakiś opis? działa ale złe wyniki? nie kompiluje się?

0
/*#include <stdio.h>

int main()
{
  int m, n, p, q, c, d, k, sum = 0;
  int first[10][10], second[10][10], multiply[10][10];

  printf("Enter the number of rows and columns of first matrix\n");
  scanf("%d%d", &m, &n);
  printf("podaj elementy pierwszej macierzy\n");

  for (c = 0; c < m; c++)
    for (d = 0; d < n; d++)
      scanf("%d", &first[c][d]);

  printf("Enter the number of rows and columns of second matrix\n");
  scanf("%d%d", &p, &q);

  if (n != p)
    printf("macierz nie moze zostac pomnozona.\n");
  else
  {
    printf("wpisz elementy drugiej macierzy\n");

    for (c = 0; c < p; c++)
      for (d = 0; d < q; d++)
        scanf("%d", &second[c][d]);

    for (c = 0; c < m; c++) {
      for (d = 0; d < q; d++) {
        for (k = 0; k < p; k++) {
          sum +=  first[c][k]*second[k][d];
        }

        multiply[c][d] = sum;
        sum = 0;
      }
    }

    printf("Product of entered matrices:-\n");

    for (c = 0; c < m; c++) {
      for (d = 0; d < q; d++)
        printf("%d\t", multiply[c][d]);

      printf("\n");
    }
  }

  return 0;
}*/


#include <stdio.h>

void wczytaj(int tab1[10][10], int* sz1,int* wy1)
{
    printf("Podaj wysokosc tablicy :");
    scanf("%d",wy1);
    printf("Podaj szerokosc tablicy :");
    scanf("%d",sz1);

    for(int i=0; i<*wy1; i++)
    {
        for(int j=0; j<*sz1; j++)
            scanf("%d",&tab1[i][j]);
    }


}


void pokaz(int tab1[10][10], int sz1,int wy1)

{

    for(int i=0; i<wy1; i++)
    {
        for(int j=0; j<sz1; j++)
            printf("%d ",tab1[i][j]);
        printf("\n");
    }


}

void pomnoz(int tab1[10][10],int tab2[10][10],int tab3[10][10], int sz1,int wy1)
{

    for (int w = 0; w < sz1; w++) {
      for ( int k = 0; k < wy1; k++) {
        for ( int s = 0; s < sz1; s++) {
          tab3[w][k]+=  tab1[w][s]*tab2[s][k];
        }
}
    }
}
int main()
{
    int tab1[10][10], sz1, wy1;
    int tab2[10][10], sz2, wy2;
    int tab3[10][10], sz3, wy3;



    printf("Pierwsza tablica\n");
    wczytaj(tab1,&sz1,&wy1);
    printf("Druga tablica\n");
    wczytaj(tab2,&sz2,&wy2);
    if (sz1!=wy2)
    {
         return 0;
    }

    pomnoz(tab1,tab2,tab3,sz1,wy1);
    printf("wynik:\n");
    pokaz(tab1,sz1,wy1);
    pokaz(tab2,sz2,wy2);
    pokaz(tab3,sz3,wy3);


    return 0;
}

działa ale zle wyniki

i jeszcze nie wiem gdzie dac warunek ze

    if (sz1!=wy2)
    {
         return 0;
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1