- int **alokacja(int a, int b)
- {
- int **tab = (int **) malloc(sizeof(int *)*a);
- for(int i=0; i<a; i++)
- tab[i] = (int*) malloc(sizeof(int)*b);
- return(tab);
- }
- int **odczytywanie(char *name, int *wa, int *wb)
- {
- int a,b;
- FILE *macierze = fopen(name, "r");
- fscanf(macierze, "%d", &a);
- fscanf(macierze, "%d", &b);
- int **tab = alokacja(a, b);
- for(int i=0; i<a; i++)
- for(int j=0; j<b; j++)
- fscanf(macierze, "%d", &tab[i][j]);
- fclose(macierze);
- *wa=a;
- *wb=b;
- return(tab);
- }
- int **mnozenie(int aa, int bb, int **tab2, int **tab3)
- {
- int **tab = alokacja(aa, bb);
- for (int i=0; i<aa; i++)
- for (int j=0; j<bb; j++)
- tab[i][j] = 0;
- for (int i=0; i<aa; i++)
- for (int j=0; j<bb; j++)
- tab[i][j] = tab[i][j] + tab2[i][j] * tab3[j][i];
- return(tab);
- }
- void zapisywanie(int aa, int bb, int **tab)
- {
- FILE *macierze = fopen("Wynik.txt", "w");
- fprintf(macierze, "%d %d \n", aa, bb);
- for(int i = 0; i<aa; i++)
- {
- for(int j=0; j<bb; j++)
- {
- fprintf(macierze, "%d ", tab[i][j]);
- }
- fprintf(macierze, "\n");
- }
- fclose(macierze);
- }
- void unalokacja(int **tab, int a)
- {
- for(int i=0; i<a; i++)
- free(tab[i]);
- free(tab);
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- int a,b,*wa = &a,*wb = &b;
- int**tab2 = odczytywanie("macierz.txt", wb, wa);
- int bb = b;
- int**tab3 = odczytywanie("macierz2.txt", wb, wa);
- int aa = a;
- int**tab = mnozenie(aa, bb, tab2, tab3);
- zapisywanie(aa, bb, tab);
- unalokacja(tab, a);
- unalokacja(tab2, a);
- unalokacja(tab3, a);
- return 0