Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.97 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void wyswietlmacierz(int wiersze,int kolumny, int **macierz);
  4. int **usunwierszikolumne(int **macierz,int liczbawierzy, int liczbakolumn, int ktorywiersz, int ktorakolumna);
  5. int wyznacznik (int **macierz, int rozmiar);
  6. int main()
  7. {   int k1,k2,w1,w2;
  8.     srand(time(0));
  9.     printf("Podaj wymiary macierzy A: liczba wierszy i kolumn\n");
  10.     scanf("%d",&w1);
  11.     scanf("%d",&k1);
  12.     printf("Podaj wymiary macierzy B: liczba wierszy i kolumn\n");
  13.     scanf("%d",&w2);
  14.     scanf("%d",&k2);
  15.     //przydzia� pami�ci
  16.     int **A;
  17.     A=(int*)malloc(sizeof(int*)*w1);
  18.     for (int i=0; i<w1;i++)
  19.         A[i]=(int*)malloc(sizeof(int)*k1);
  20.     //wype�nienie macierzy
  21.     for (int i=0; i<w1;i++)
  22.         for(int j=0; j<k1;j++)
  23.         A[i][j]=rand()%10;
  24.     printf("Macierz A:\n");
  25.     wyswietlmacierz(w1,k1,A);
  26.     int **B;
  27.     B=(int*)malloc(sizeof(int*)*w2);
  28.     for (int i=0; i<w2;i++)
  29.         B[i]=(int*)malloc(sizeof(int)*k2);
  30.     //wype�nienie macierzy
  31.     for (int i=0; i<w2;i++)
  32.         for(int j=0; j<k2;j++)
  33.         B[i][j]=rand()%10;
  34.     printf("Macierz B:\n");
  35.     wyswietlmacierz(w2,k2,B);
  36.     int**pomniejszoneA;
  37.     pomniejszoneA=usunwierszikolumne(A,w1,k1,1,1);
  38.     printf("Macierz A bez pierwszego wiersza i pierwszej kolumny:\n");
  39.     wyswietlmacierz(w1-1,k1-1,pomniejszoneA);
  40.     printf("Wyznacznik Macierzy A:");
  41.     printf("%d",wyznacznik(A,w1));
  42. }
  43. void wyswietlmacierz(int wiersze,int kolumny, int **macierz)
  44. {
  45.     for (int i=0; i<wiersze; i++)
  46.     {
  47.         for (int j=0; j<kolumny;j++)
  48.         printf("%d  ",macierz[i][j]);
  49.         printf("\n");
  50.     }
  51. }
  52. int **usunwierszikolumne(int **macierz,int liczbawierszy, int liczbakolumn, int ktorywiersz, int ktorakolumna)
  53. {
  54.     int **wynik;
  55.     wynik=(int*)malloc(sizeof(int*)*(liczbawierszy-1));
  56.     for (int i=0; i<(liczbawierszy-1);i++)
  57.        wynik[i]=(int*)malloc(sizeof(int)*(liczbakolumn-1));
  58.  
  59.        for(int i=0; i<ktorywiersz;i++)
  60.        {
  61.            for(int j=0;i<ktorakolumna-1;j++)
  62.            wynik[i][j]=macierz[i][j];
  63.            for (int j=ktorakolumna;j<liczbakolumn;j++)
  64.             wynik[i][j-1]=macierz[i][j];
  65.        }
  66.        for(int i=ktorywiersz;i<liczbawierszy;i++)
  67.         {
  68.            for(int j=0;i<ktorakolumna-1;j++)
  69.            wynik[i-1][j]=macierz[i][j];
  70.            for (int j=ktorakolumna;j<liczbakolumn;j++)
  71.             wynik[i-1][j-1]=macierz[i][j];
  72.        }
  73.     return wynik;
  74. }
  75. int wyznacznik (int **macierz, int rozmiar)
  76. {
  77.     int wynik=0;
  78.     if (rozmiar==1) wynik=macierz[0][0];
  79.  
  80.     else if (rozmiar==2) wynik=macierz[0][0]*macierz[1][1]-macierz[0][1]*macierz[1][0];
  81.  
  82.     else
  83.         {
  84.             for (int i=0;i<rozmiar;i++)
  85.             {
  86.                 int **pom=usunwierszikolumne(macierz,rozmiar,rozmiar,1,i+1);
  87.                 if(i%2==0) wynik+=macierz[0][i]*wyznacznik(pom,rozmiar-1);
  88.                 else wynik-=macierz[0][i]*wyznacznik(pom,rozmiar-1);
  89.             }
  90.         }
  91.     return wynik;
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement