Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void wyswietlmacierz(int wiersze,int kolumny, int **macierz);
- int **usunwierszikolumne(int **macierz,int liczbawierzy, int liczbakolumn, int ktorywiersz, int ktorakolumna);
- int wyznacznik (int **macierz, int rozmiar);
- int main()
- { int k1,k2,w1,w2;
- srand(time(0));
- printf("Podaj wymiary macierzy A: liczba wierszy i kolumn\n");
- scanf("%d",&w1);
- scanf("%d",&k1);
- printf("Podaj wymiary macierzy B: liczba wierszy i kolumn\n");
- scanf("%d",&w2);
- scanf("%d",&k2);
- //przydzia� pami�ci
- int **A;
- A=(int*)malloc(sizeof(int*)*w1);
- for (int i=0; i<w1;i++)
- A[i]=(int*)malloc(sizeof(int)*k1);
- //wype�nienie macierzy
- for (int i=0; i<w1;i++)
- for(int j=0; j<k1;j++)
- A[i][j]=rand()%10;
- printf("Macierz A:\n");
- wyswietlmacierz(w1,k1,A);
- int **B;
- B=(int*)malloc(sizeof(int*)*w2);
- for (int i=0; i<w2;i++)
- B[i]=(int*)malloc(sizeof(int)*k2);
- //wype�nienie macierzy
- for (int i=0; i<w2;i++)
- for(int j=0; j<k2;j++)
- B[i][j]=rand()%10;
- printf("Macierz B:\n");
- wyswietlmacierz(w2,k2,B);
- int**pomniejszoneA;
- pomniejszoneA=usunwierszikolumne(A,w1,k1,1,1);
- printf("Macierz A bez pierwszego wiersza i pierwszej kolumny:\n");
- wyswietlmacierz(w1-1,k1-1,pomniejszoneA);
- printf("Wyznacznik Macierzy A:");
- printf("%d",wyznacznik(A,w1));
- }
- void wyswietlmacierz(int wiersze,int kolumny, int **macierz)
- {
- for (int i=0; i<wiersze; i++)
- {
- for (int j=0; j<kolumny;j++)
- printf("%d ",macierz[i][j]);
- printf("\n");
- }
- }
- int **usunwierszikolumne(int **macierz,int liczbawierszy, int liczbakolumn, int ktorywiersz, int ktorakolumna)
- {
- int **wynik;
- wynik=(int*)malloc(sizeof(int*)*(liczbawierszy-1));
- for (int i=0; i<(liczbawierszy-1);i++)
- wynik[i]=(int*)malloc(sizeof(int)*(liczbakolumn-1));
- for(int i=0; i<ktorywiersz;i++)
- {
- for(int j=0;i<ktorakolumna-1;j++)
- wynik[i][j]=macierz[i][j];
- for (int j=ktorakolumna;j<liczbakolumn;j++)
- wynik[i][j-1]=macierz[i][j];
- }
- for(int i=ktorywiersz;i<liczbawierszy;i++)
- {
- for(int j=0;i<ktorakolumna-1;j++)
- wynik[i-1][j]=macierz[i][j];
- for (int j=ktorakolumna;j<liczbakolumn;j++)
- wynik[i-1][j-1]=macierz[i][j];
- }
- return wynik;
- }
- int wyznacznik (int **macierz, int rozmiar)
- {
- int wynik=0;
- if (rozmiar==1) wynik=macierz[0][0];
- else if (rozmiar==2) wynik=macierz[0][0]*macierz[1][1]-macierz[0][1]*macierz[1][0];
- else
- {
- for (int i=0;i<rozmiar;i++)
- {
- int **pom=usunwierszikolumne(macierz,rozmiar,rozmiar,1,i+1);
- if(i%2==0) wynik+=macierz[0][i]*wyznacznik(pom,rozmiar-1);
- else wynik-=macierz[0][i]*wyznacznik(pom,rozmiar-1);
- }
- }
- return wynik;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement