Facebook
From Anorexic Motmot, 7 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 323
  1. #include "stdafx.h"
  2. #include "stdafx.h"
  3. #include "stdlib.h"
  4.  
  5. int **alokacja(int a, int b)                                            //alokacja
  6. {
  7.         int **tab = (int **)malloc(sizeof(int *)*a);  // alokacja pamięci na argumenty
  8.         for (int i = 0; i<a; i++)
  9.                 tab[i] = (int*)malloc(sizeof(int)*b);   // alokacja pamięci na tablice
  10.         return(tab);
  11. }
  12.  
  13. int **odczytywanie(char *name, int *wa, int *wb)
  14. {
  15.         int a, b;
  16.         FILE *macierze = fopen(name, "r");                              //odczyt z pliku
  17.         fscanf(macierze, "%d", &a);
  18.         fscanf(macierze, "%d", &b);
  19.         int **tab = alokacja(a, b);                     // alokacja pamięci na tablice
  20.         for (int i = 0; i<a; i++)                       // pętla dla kolumn
  21.         for (int j = 0; j<b; j++)                       // pętla dla wierszy
  22.                 fscanf(macierze, "%d", &tab[i][j]);         //wypisanie tablicy
  23.         fclose(macierze);
  24.         *wa = a;                                                                                        //wskaznik na macierz a
  25.         *wb = b;                                                                                        //wskaznik na macierz b
  26.         return(tab);
  27. }
  28.  
  29. int **mnozenie(int aa, int bb, int **tab2, int **tab3)
  30. {
  31.         int **tab = alokacja(aa, bb);
  32.         for (int i = 0; i<aa; i++)    //petla dla pierwszej macierzy, kolumny
  33.         for (int j = 0; j<bb; j++)    //petla dla pierwszej macierzy, wiersze
  34.                 tab[i][j] = 0;
  35.         for (int i = 0; i<aa; i++)   //??
  36.         for (int j = 0; j<bb; j++)   //??
  37.                 tab[i][j] = tab[i][j] + tab2[i][j] * tab3[j][i];        //mnozenie macierzy
  38.         return(tab);
  39. }
  40.  
  41. void zapisywanie(int aa, int bb, int **tab)
  42. {
  43.         FILE *macierze = fopen("Wynik.txt", "w");               //zapis do pliku
  44.         fprintf(macierze, "%d %d \n", aa, bb);
  45.         for (int i = 0; i<aa; i++)  //???
  46.         {
  47.                 for (int j = 0; j<bb; j++)
  48.                 {
  49.                         fprintf(macierze, "%d ", tab[i][j]);
  50.                 }
  51.                 fprintf(macierze, "\n");
  52.         }
  53.         fclose(macierze);
  54. }
  55.  
  56. void unalokacja(int **tab, int a)
  57. {
  58.         for (int i = 0; i<a; i++)
  59.                 free(tab[i]);                                                           //zwolnienie alokacji dla argumentów  
  60.  
  61.         free(tab);  //zwolnienie pamięci dla tablicy
  62. }
  63.  
  64. int _tmain(int argc, _TCHAR* argv[])                            //glowny main, odpalenie wszystkich funkcji
  65. {
  66.         int a, b, *wa = &a, *wb = &b; //????
  67.         int**tab2 = odczytywanie("macierz.txt", wb, wa);
  68.         int bb = b;
  69.         int**tab3 = odczytywanie("macierz2.txt", wb, wa);
  70.         int aa = a;
  71.         int**tab = mnozenie(aa, bb, tab2, tab3);
  72.         zapisywanie(aa, bb, tab);
  73.         unalokacja(tab, a);
  74.         unalokacja(tab2, a);
  75.         unalokacja(tab3, a);
  76.  
  77.         return 0;
  78.  
  79. }