Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct macierz
- {
- int wiersze, kolumny;
- double **elementy;
- };
- struct macierz* odczyt(char *plik)
- {
- FILE *we = fopen(plik, "r");
- int w, k, i, j
- fread(&w, sizeof(int), 1, we);
- fread(&k, sizeof(int), 1, we);
- for (i=0, i<m.wiersze)
- for (j=0, j<n.kolumny)
- };
- void zapisz(char *plik, struct macierz* m)
- {
- FILE *kopiujmacierz = (fopen("kopiujmacierz", "w")
- fscanf("")
- for( int wiersze=0; wiersze<m.wiersze; wiersze++)
- {
- printf("|");
- for(int kolumny=0; kolumny<m.kolumny; kolumny++)
- {
- printf(" %1.0f",m.elementy[wiersze][kolumny]);
- }
- printf(" |\n");
- }
- printf("\n");
- }
- double wyznacznik(struct macierz m)
- {
- if(m.kolumny>2)
- {
- double det =0.0;
- for(int kolumna=0;kolumna<m.kolumny;kolumna++)
- {
- struct macierz n={.wiersze=m.wiersze-1, .kolumny=m.kolumny-1,
- .elementy = calloc(m.wiersze-1, sizeof (double*))};
- for (int i=0; i<m.wiersze; i++)
- n.elementy[i]= calloc(m.kolumny-1, sizeof (double));
- for(int w=1; w<m.wiersze; w++)
- {
- for(int k=0, ind=0; k<m.kolumny;k++)
- {
- if(k==kolumna)
- continue;
- n.elementy[(w-1)][ind]=m.elementy[w][k];
- ind++;
- }
- }
- det+=wyznacznik(n)*((1+kolumna)%2 ? 1.0 : -1.0)*m.elementy[0][kolumna];
- for (int i=0; i<m.wiersze; i++)
- free (n.elementy[i]);
- free (n.elementy);
- }
- return det;
- }
- else
- {
- return(m.elementy[0][0]*m.elementy[1][1]-m.elementy[0][1]*m.elementy[1][0]);
- }
- }
- int main()
- {
- struct macierz mac = {.wiersze=3, .kolumny=3,
- .elementy= (double*[3]){(double[3]){1,0,0}, (double[3]){0,2,2}, (double[3]){-8,3,6}
- }
- };
- wypisz(mac);
- printf("wyznacznik =%f\n",wyznacznik(mac));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement