Mnożenie macierzy

dodane 00:03

/*prosty program, trudno znaleźć taki na necie, jakieś malloce, niewiadomo co. Ten liczy macierze 3x3 można go też dostosować do innych rozmiarów. Na pewno przyda się początkującym.*/

Dzisiaj prosty program w C, mnozy macierze. Nie używa ani mamlloców ani wskaźników. Wskaźniki miał używac ale nie wyszło. W każdym razie pokazuje najmniej zaawansowany sposób zapisywania i odczytywania tablic dwuwymiarowych.

#include <stdio.h>
  #include <stdlib.h>
/*i logicznie powiaż sobie z liczbą wierszy macierzy A
j - kolumny macierzy A i wiersze macierzy B
c- kolumny macierzy B */
//patrz też uwagi na końcu
int i,j,k;
//deklaracja macierzy A i zerowanie jej
int tab1 [3] [3]  ={0};

//deklaracja macierzy B i zerowanie jej
int tab2 [3] [3]  = {0};
//deklaracja macierzy wynik i zerowanie jej
int wynik [3] [3] = {0};
//zaczynamy program
 int main(int argc, char *argv[])
{
// Wprowadzanie macierzy A
    {
   printf("Wprowadz macierz A wierszami:\n");

     for(i=0; i<3; i++)
        {
    printf("Wiersz %d\n", i+1);
     for(j=0; j<3; j++)
     scanf("%d",&tab1 [i][j]);
/*powyższe pętle for są konstrukcją niezwykle istotną. Umożliwia ona wprowadzanie tablicy dwuwymiarowej.
j jest zagnieżdżone i liczy kolumny, i - numery wierszy. Pojęcie tego jest niełatwe.
W scanf przed tab1 musi być &, to znaczy że będzie pobierać czy coś.
 */
             }
    }
    /*tu mozna wyświetlić macierz A - w celach testowych
    {
    for (i=0; i<3;++i)
     for(j=0; j<3; j++)
    printf("element %d %d = %d\n", i+1,j+1, tab1 [i][j]);
    */
    printf("Wprowadz macierz B wierszami:\n");

     for(i=0; i<3; i++)
         {
      printf("Wiersz %d\n", i+1);
      for(j=0; j<3; j++)
            scanf("%d",&tab2 [i][j]);
         }
    /* *tu mozna wyświetlić macierz A - w celach testowych

    for (i=0; i<3;++i)
     for(j=0; j<3; j++)
{
printf("element macierzy B %d %d = %d\n", i+1,j+1, tab2 [i][j]);
     } }
*/
//Obliczanie wyniku, 2 pętla zagnieżdzone, paranoja
 for(i=0;i<3;i++)
  {
    for(j=0;j<3;j++)
    {
      wynik[i][j]=0;
      for(k=0;k<3;k++)
        wynik[i][j]+=tab1[i][k]*tab2[k][j];
//powyższy wiersz stanowi sedno programu, żebym rozumiał o co chodzi w nim do końca to nei rozumiem.
    }
  }
//wyswietlanie
  for(i=0; i<3; i++)
 {
     for(j=0;j<3;j++)
    {     
      printf("%d %d = %d\n",i+1,j+1,wynik[i][j]);
//i+1. j+1 dlatego, że w C numer zaczyna się od zera, więc żeby nie mieć wierszy 0,1,2 zwiekszam
    }
}
    //poniższe odkomentuj pod Windows
  // system("PAUSE");
    return 0;
     }
/*prosty program, trudno znaleźć taki na necie, jakieś malloce, niewiadomo co. Ten liczy macierze 3x3 można go też dostosować do innych rozmiarów. Na pewno przyda się początkującym.*/

nd pn wt śr cz pt sb

27

28

29

30

31

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

1

2

3

4

5

6

7

Dzisiaj: 25.11.2024

Ostatnio dodane