fork download
  1. #include <stdio.h>
  2.  
  3. #define tamanho 2
  4.  
  5. int main() {
  6.  
  7. double mat[tamanho][tamanho] = { {1, 4}, {7, 3} };
  8. // double mat[tamanho][tamanho] = { {2, -4, 8}, {5, 4, 6}, {-3, 0, 2} };
  9. // double mat[tamanho][tamanho] = { {1, 4, 7, 3}, {2, 6, -3, 0}, {2, 1, 3, 6}, {8, -2, 5, -1} };
  10. // double mat[tamanho][tamanho] = { {1, 4, 7, 3, 2}, {6, -3, 0, 2, 1}, {3, 6, 8, -2, 5}, {-1, 0, 1, -7, -5}, {4, 6, -10.5, 0, -5} };
  11.  
  12. int i, j, pivo; // Índices para efetuar modificações na matriz.
  13. int a, b; // Índices apenas para debugar a modificação da matriz.
  14.  
  15. printf("\nMatriz antes do cálculo\n");
  16. for (a = 0; a < tamanho; a++) {
  17. for (b = 0; b < tamanho; b++) {
  18. printf("%.2f\t", mat[a][b]);
  19. }
  20. printf("\n");
  21. }
  22. printf("\n");
  23.  
  24. printf("\nMatriz transposta é\n");
  25. for (a = 0; a < tamanho; a++) {
  26. for (b = 0; b < tamanho; b++) {
  27. printf("%.2f\t", mat[b][a]);
  28. }
  29. printf("\n");
  30. }
  31. printf("\n");
  32.  
  33. // Triangularizando a matriz.
  34. for (pivo = tamanho - 1; pivo >= 0; pivo--) {
  35.  
  36. for (i = pivo - 1; i >= 0; i--) {
  37.  
  38. double mult = (-1) * mat[i][pivo] / mat[pivo][pivo];
  39.  
  40. for (j = tamanho - 1; j >= 0; j--) {
  41. mat[i][j] += mult * mat[pivo][j];
  42. } // Fim do for j.
  43.  
  44. printf("Matriz alterada com pivo=%d, i=%d\n", pivo, i);
  45. for (a = 0; a < tamanho; a++) {
  46. for (b = 0; b < tamanho; b++) {
  47. printf("%.2f\t", mat[a][b]);
  48. }
  49. printf("\n");
  50. } // Fim do for a.
  51.  
  52. } // Fim do for i.
  53. } // Fim do for pivo.
  54. // Fim da triangularização da matriz. Pronto para o cálculo do determinante.
  55.  
  56. // Calculando determinante.
  57. double det = 1;
  58. for (i = 0; i < tamanho; i++) {
  59. printf("mat[%d][%d] = %.2f\n", i, i, mat[i][i]);
  60. det *= mat[i][i];
  61. } // Fim do cálculo do determinante.
  62. printf("\nDeterminante = %.2f\n", det);
  63.  
  64. printf("\nMatriz após o cálculo\n");
  65. for (a = 0; a < tamanho; a++) {
  66. for (b = 0; b < tamanho; b++) {
  67. printf("%.2f\t", mat[a][b]);
  68. }
  69. printf("\n");
  70. } // Fim do for a.
  71. printf("\n");
  72.  
  73. return 0;
  74. }
Success #stdin #stdout 0s 2160KB
stdin
Standard input is empty
stdout
Matriz antes do cálculo
1.00	4.00	
7.00	3.00	


Matriz transposta é
1.00	7.00	
4.00	3.00	

Matriz alterada com pivo=1, i=0
-8.33	0.00	
7.00	3.00	
mat[0][0] = -8.33
mat[1][1] = 3.00

Determinante = -25.00

Matriz após o cálculo
-8.33	0.00	
7.00	3.00