Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct macierz
  4. {
  5. int wiersze, kolumny;
  6. double **elementy;
  7. };
  8.  
  9. struct macierz* odczyt(char *plik)
  10. {
  11. FILE *we = fopen(plik, "r");
  12. int w, k, i, j
  13. fread(&w, sizeof(int), 1, we);
  14. fread(&k, sizeof(int), 1, we);
  15. for (i=0, i<m.wiersze)
  16. for (j=0, j<n.kolumny)
  17. };
  18.  
  19. void zapisz(char *plik, struct macierz* m)
  20. {
  21. FILE *kopiujmacierz = (fopen("kopiujmacierz", "w")
  22. fscanf("")
  23.  
  24.  
  25. for( int wiersze=0; wiersze<m.wiersze; wiersze++)
  26. {
  27. printf("|");
  28. for(int kolumny=0; kolumny<m.kolumny; kolumny++)
  29. {
  30. printf(" %1.0f",m.elementy[wiersze][kolumny]);
  31. }
  32. printf(" |\n");
  33. }
  34. printf("\n");
  35. }
  36. double wyznacznik(struct macierz m)
  37. {
  38. if(m.kolumny>2)
  39. {
  40. double det =0.0;
  41. for(int kolumna=0;kolumna<m.kolumny;kolumna++)
  42. {
  43. struct macierz n={.wiersze=m.wiersze-1, .kolumny=m.kolumny-1,
  44. .elementy = calloc(m.wiersze-1, sizeof (double*))};
  45.  
  46. for (int i=0; i<m.wiersze; i++)
  47. n.elementy[i]= calloc(m.kolumny-1, sizeof (double));
  48.  
  49. for(int w=1; w<m.wiersze; w++)
  50. {
  51. for(int k=0, ind=0; k<m.kolumny;k++)
  52. {
  53. if(k==kolumna)
  54. continue;
  55. n.elementy[(w-1)][ind]=m.elementy[w][k];
  56. ind++;
  57. }
  58. }
  59. det+=wyznacznik(n)*((1+kolumna)%2 ? 1.0 : -1.0)*m.elementy[0][kolumna];
  60. for (int i=0; i<m.wiersze; i++)
  61. free (n.elementy[i]);
  62. free (n.elementy);
  63. }
  64. return det;
  65. }
  66. else
  67. {
  68. return(m.elementy[0][0]*m.elementy[1][1]-m.elementy[0][1]*m.elementy[1][0]);
  69. }
  70. }
  71. int main()
  72. {
  73. struct macierz mac = {.wiersze=3, .kolumny=3,
  74. .elementy= (double*[3]){(double[3]){1,0,0}, (double[3]){0,2,2}, (double[3]){-8,3,6}
  75. }
  76.  
  77. };
  78.  
  79. wypisz(mac);
  80. printf("wyznacznik =%f\n",wyznacznik(mac));
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement