[C] mnożenie 2 mcierzy

culs
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 18 sty 2009, o 20:31
Podziękował: 1 raz

[C] mnożenie 2 mcierzy

Post autor: culs »

Witam. Mam problem potrzebuje na jutro:
Napisac program i funkcje mnozaca dwie macierze oraz program główny demonstrujacy jej działanie.
W jezyku c.
Załozenia
Funkcja nie wykorzystuje zadnych zmiennych globalnych, umozliwia wykonywanie operacji na macierzach o róznych wymiarach (ustalonych na etapie wywoływania funkcji) nie modyfikuje macierzy wejsciowej. Program główny wyswietla dane wejsciowe oraz wynikowe w postaci macierzy.

Bardzo tego potrzebuje a nie wiem jak to dokonca zrobic. Mam tylko to:

Kod: Zaznacz cały

# include <stdio.h>

main()
{
      matrix();
      system("PAUSE");
      }
matrix()
{
      int a;
      int b;
      int c;
      int x;
      int y;
      printf("Podaj liczbe wierszy macierzy pierwszej:");
      scanf("%d", &a);
      printf("Podaj liczbe kolumn macierzy pierwszej i liczbe wierszy macierzy drugiej:");
      scanf("%d", &c);
      printf("Podaj liczbe kolumn macierzy drugiej:");
      scanf("%d", &b);
      printf("
	Twoja pierwsza macierz ma wymiary %dx%d
", a, c);
      printf("
	Twoja druga macierz ma wymiary %dx%d

", c, b);
      int macierz1[a][c];
      int macierz2[c][b];
      int macierz3[a][b];
      printf("
Elementy pierwszej macierzy:

");
      for (x=1; x<=a; x++)
      {
          for (y=1; y<=c; y++)
          {
          printf("Podaj element [%d,%d]: ", x, y);
          scanf("%d", &macierz1[x][y]);
          }     
      }
      printf("
Elementy drugiej macierzy:

");            
      for (x=1; x<=c; x++)
      {
          for (y=1; y<=b; y++)
          {
          printf("Podaj element [%d,%d]: ", x, y);
          scanf("%d", &macierz2[x][y]);
          }     
      }            
      printf("

Pierwsza macierz zadeklarowana:
");
      for (x=1; x<=a; x++)
      {
          printf("
		");
          for (y=1; y<=c; y++)
          {
          printf("[%d %d]=%d    ", x, y, macierz1[x][y]);
          }   
      }
      printf("

Druga macierz zadeklarowana:
");
      for (x=1; x<=c; x++)
      {
          printf("
		");
          for (y=1; y<=b; y++)
          {
          printf("[%d %d]=%d    ", x, y, macierz2[x][y]);
          }    
      }
      for (x=1; x<=a; x++)
      {
          for (y=1; y<=b; y++)
          {
          macierz3[x][y]= tutaj nie wiem jak zrobic
          }
      }
      printf("


Wynik mnozenia macierzy:

");
      for (x=1; x<=a; x++)
      {
          printf("
		");
          for (y=1; y<=b; y++)
          {
          printf("[%d %d]=%d   ", x, y, macierz3 [x][y]);
          }     
      }       
      printf("


");
}
raphel
Użytkownik
Użytkownik
Posty: 657
Rejestracja: 9 gru 2007, o 12:27
Płeć: Mężczyzna
Lokalizacja: Czewa/Wrocław
Podziękował: 84 razy
Pomógł: 138 razy

[C] mnożenie 2 mcierzy

Post autor: raphel »

Kod: Zaznacz cały

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

int macierz_bez() 
{ 
     int a=4; 
     int b=3; 
     int c=5; 
      
  int macierz1[a][b]; 
  int macierz2[b][c]; 
  int macierz3[a][c]; 
  int i,j,k; 
  srand(time(NULL)); 
  
  for(i=0;i<a;i++) 
  { 
    for(j=0;j<b; j++) 
    { 
             macierz1[i][j]=1+ rand()%10; 
              
    } 
  } 
  printf ("Macierz 1:
"); 
  for(i=0; i<a;i++) 
  { 
    for(j=0; j<b; j++) 
    { 
       printf("%3.d", macierz1[i][j]); 
    } 
    printf("
"); 
  } 
  
  for(i=0;i<b;i++) 
  { 
    for(j=0;j<c; j++) 
    { 
             macierz2[i][j]=1+ rand()%10; 
    } 
  } 
  
  printf ("Macierz 2:
"); 
  for(i=0; i<b;i++) 
  { 
    for(j=0; j<c; j++) 
    { 
       printf("%3.d", macierz2[i][j]); 
    } 
    printf("
"); 
  } 
  
  
  for(i=0; i<a; i++) 
    { 
       for(j=0; j<c; j++) 
       { 
           macierz3[i][j]=0; 
           for(k=0;k<b;k++) 
           { 
              macierz3[i][j] += macierz1[i][k]*macierz2[k][j]; 
           } 
       } 
    } 

    printf("macierz1 * macierz2
"); 
    for(i=0; i<a; i++) 
    { 
      for(j=0; j<c; j++) 
      { 
         printf("%6.d", macierz3[i][j]); 
      } 
      printf("
"); 
    } 

} 
int main(int argc, char *argv[]) 
{ 
    int n; 
    macierz_bez(); 
  system("PAUSE");    
  return 0; 
}
mnoży 2 macierze a x b i b x c
ODPOWIEDZ