Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //przykladowe uruchomienie:
- // gcc -Wall -o cram cramer.c
- // ./cram dane.txt
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- //wyznacznik metoda sarrusa
- float sar(int n, float A[20][20])
- {
- float det;
- if(n==1)
- return A[0][0];
- else if(n==2)
- {
- det = A[0][0]*A[1][1]-A[0][1]*A[1][0];
- return det;
- }
- else
- {
- det = A[0][0]*A[1][1]*A[2][2] + A[0][1]*A[1][2]*A[2][0] + A[0][2]*A[1][0]*A[2][1] - A[0][2]*A[1][1]*A[2][0] - A[0][0]*A[1][2]*A[2][1] - A[0][1]*A[2][2]*A[1][0];
- }
- return det;
- }
- int main(int argc,char **argv)
- {
- FILE *plik = fopen(argv[1],"r");
- char tab[20], *token;
- float c[20][20], w[20][20], tmpW[20][20], b[20], x[5];
- int s, i, j, row = 0, col;
- //odczyt macierzy z pliku
- while(!feof(plik))
- {
- if(fgets(tab, 255, plik) == NULL) continue;
- token = strtok(tab," ");
- col = 0;
- while(token != NULL)
- {
- c[row][col] = atof(token);
- token = strtok(NULL," ");
- col++;
- }
- row++;
- }
- //przykładowa macierz C odczytana z pliku(taka jak w instrukcji):
- // |2 3 2 22|
- // C = |4 8 4 48|
- // |5 1 3 32|
- //przypisanie elementow z macierzy C(poza ostatnia kolumna) do macierzy W
- for(i=0; i<row; i++)
- for(j=0; j<row; j++)
- w[i][j] = c[i][j];
- //przypisanie elementow z ostatniej kolumny macierzy C do wektora B
- for(i=0; i<row; i++)
- b[i] = c[i][col-1];
- printf("Macierz W:\n");
- for(i=0; i<row; i++)
- {
- for(j=0; j<row; j++)
- {
- printf("%0.f ",w[i][j]);
- }
- printf("\n");
- }
- printf("Wektor B:\n");
- for(i=0; i<row; i++)
- {
- printf("%0.0f\n",b[i]);
- }
- printf("Wyznacznik W = %0.2f\n",sar(row,w));
- s = 0;
- while(s != row)
- {
- //przypisanie do macierz tmpW elementow z tablicy w
- for(i=0; i<row; i++)
- for(j=0; j<row; j++)
- tmpW[i][j] = w[i][j];
- //zamiana elementow z danej kolumny na elementy z wektora wyrazow wolnych
- for(i=0; i<row; i++)
- tmpW[i][s] = b[i];
- printf("Wyznacznik W%d = %0.2f\n",s+1,sar(row,tmpW));
- //wyznacznie rozwiazania
- x[s] = sar(row,tmpW)/sar(row,w);
- s++;
- }
- printf("\nSzukane niewiadome:\n");
- for(i=0; i<row; i++)
- printf("x%d = %0.1f\n",i+1,x[i]);
- free(token);
- fclose(plik);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement