Facebook
From Eratic Motmot, 7 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 310
  1. int **alokacja(int a, int b)
  2. {
  3.         int **tab = (int **) malloc(sizeof(int *)*a);
  4.         for(int i=0; i<a; i++)
  5.                 tab[i] = (int*) malloc(sizeof(int)*b);
  6.         return(tab);
  7. }
  8.  
  9. int **odczytywanie(char *name, int *wa, int *wb)
  10. {
  11.         int a,b;
  12.         FILE *macierze = fopen(name, "r");
  13.         fscanf(macierze, "%d", &a);
  14.         fscanf(macierze, "%d", &b);
  15.         int **tab = alokacja(a, b);
  16.         for(int i=0; i<a; i++)
  17.                 for(int j=0; j<b; j++)
  18.                         fscanf(macierze, "%d", &tab[i][j]);
  19.         fclose(macierze);
  20.         *wa=a;
  21.         *wb=b;
  22.         return(tab);
  23. }
  24.  
  25. int **mnozenie(int aa, int bb, int **tab2, int **tab3)
  26. {
  27.         int **tab = alokacja(aa, bb);
  28.         for (int i=0; i<aa; i++)
  29.         for (int j=0; j<bb; j++)
  30.                 tab[i][j] = 0;
  31.         for (int i=0; i<aa; i++)
  32.         for (int j=0; j<bb; j++)
  33.                 tab[i][j] = tab[i][j] + tab2[i][j] * tab3[j][i];
  34.         return(tab);
  35. }
  36.  
  37. void zapisywanie(int aa, int bb, int **tab)
  38. {
  39.         FILE *macierze = fopen("Wynik.txt", "w");
  40.         fprintf(macierze, "%d %d \n", aa, bb);
  41.         for(int i = 0; i<aa; i++)
  42.         {
  43.                 for(int j=0; j<bb; j++)
  44.                 {
  45.                         fprintf(macierze, "%d ", tab[i][j]);
  46.                 }
  47.                 fprintf(macierze, "\n");
  48.         }
  49.         fclose(macierze);
  50. }
  51.  
  52. void unalokacja(int **tab, int a)
  53. {
  54.         for(int i=0; i<a; i++)
  55.                 free(tab[i]);
  56.  
  57.         free(tab);
  58. }
  59.  
  60. int _tmain(int argc, _TCHAR* argv[])
  61. {
  62.         int a,b,*wa = &a,*wb = &b;
  63.         int**tab2 = odczytywanie("macierz.txt", wb, wa);
  64.         int bb = b;
  65.         int**tab3 = odczytywanie("macierz2.txt", wb, wa);
  66.         int aa = a;
  67.         int**tab = mnozenie(aa, bb, tab2, tab3);
  68.         zapisywanie(aa, bb, tab);
  69.         unalokacja(tab, a);
  70.         unalokacja(tab2, a);
  71.         unalokacja(tab3, a);
  72.  
  73.         return 0