- #include "stdafx.h"
- #include "stdafx.h"
- #include "stdlib.h"
- int **alokacja(int a, int b) //alokacja
- {
- int **tab = (int **)malloc(sizeof(int *)*a); // alokacja pamięci na argumenty
- for (int i = 0; i<a; i++)
- tab[i] = (int*)malloc(sizeof(int)*b); // alokacja pamięci na tablice
- return(tab);
- }
- int **odczytywanie(char *name, int *wa, int *wb)
- {
- int a, b;
- FILE *macierze = fopen(name, "r"); //odczyt z pliku
- fscanf(macierze, "%d", &a);
- fscanf(macierze, "%d", &b);
- int **tab = alokacja(a, b); // alokacja pamięci na tablice
- for (int i = 0; i<a; i++) // pętla dla kolumn
- for (int j = 0; j<b; j++) // pętla dla wierszy
- fscanf(macierze, "%d", &tab[i][j]); //wypisanie tablicy
- fclose(macierze);
- *wa = a; //wskaznik na macierz a
- *wb = b; //wskaznik na macierz 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++) //petla dla pierwszej macierzy, kolumny
- for (int j = 0; j<bb; j++) //petla dla pierwszej macierzy, wiersze
- 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]; //mnozenie macierzy
- return(tab);
- }
- void zapisywanie(int aa, int bb, int **tab)
- {
- FILE *macierze = fopen("Wynik.txt", "w"); //zapis do pliku
- 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]); //zwolnienie alokacji dla argumentów
- free(tab); //zwolnienie pamięci dla tablicy
- }
- int _tmain(int argc, _TCHAR* argv[]) //glowny main, odpalenie wszystkich funkcji
- {
- 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;
- }