fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main(){
  5. int seed,A[100][100],a=1,b=1,k;
  6. scanf("%d",&seed);
  7. srand(seed);
  8. for(b=1;b<5;b++){
  9. for(a=1;a<5;a++)
  10. {A[a][b]=rand()%100-rand()%100;}
  11. }
  12. printf("The 4x4 matrix is:\n");
  13. for(a=1;a<5;a++){
  14. for(b=1;b<5;b++)
  15. { if(0<=A[a][b]<=9){printf("%3d ",A[a][b]);}
  16. else {printf("%3d ",A[a][b]); } }
  17. printf("\n");
  18. }
  19. printf("\n\n");
  20.  
  21. for(a=1;a<4;a++){
  22. for(b=2;b<5;b++){
  23. if(a==2&&b==2){b++;}
  24. if(a==3&&b==2){b++;}
  25. k=A[a][b];
  26. A[a][b]=A[b][a];
  27. A[b][a]=k;
  28. }
  29. }
  30. printf("The transpose matrix is:\n");
  31. for(a=1;a<5;a++){
  32. for(b=1;b<5;b++)
  33. { if(0<=A[a][b]<=9){printf("%3d ",A[a][b]);}
  34. else {printf("%3d ",A[a][b]); } }
  35. printf("\n");
  36. }
  37.  
  38. printf("\n\n");
  39.  
  40. for(a=1;a<4;a++){
  41. for(b=2;b<5;b++){
  42. if(a==2&&b==2){b++;}
  43. if(a==3&&b==2){b++;}
  44. k=A[a][b];
  45. A[a][b]=A[b][a];
  46. A[b][a]=k;
  47. }
  48. }
  49.  
  50. int condition=1,n=0;
  51. float B[100][100],m[100],det,inversematrix[100];
  52. for(b=1;b<5;b++){
  53. for(a=1;a<5;a++)
  54. {B[a][b]=A[a][b];}
  55. }
  56. a=1;b=1;n=0;
  57. for(a=1;a<5;a++){
  58. for(b=1;b<5;b++){m[n]=B[a][b];
  59. if(b<4){n++;}
  60. }
  61. }
  62. det=m[0]*m[5]*m[10]*m[15]+m[0]*m[6]*m[11]*m[13]+m[0]*m[7]*m[9]*m[14]
  63. +m[1]*m[4]*m[11]*m[14]+m[1]*m[6]*m[8]*m[15]+m[1]*m[7]*m[10]*m[12]
  64. +m[2]*m[4]*m[9]*m[15]+m[2]*m[5]*m[11]*m[12]+m[2]*m[7]*m[8]*m[13]
  65. +m[3]*m[4]*m[10]*m[13]+m[3]*m[5]*m[8]*m[14]+m[3]*m[6]*m[9]*m[12]
  66. -m[0]*m[5]*m[11]*m[14]-m[0]*m[6]*m[9]*m[15]-m[0]*m[7]*m[10]*m[13]
  67. -m[1]*m[4]*m[10]*m[15]-m[1]*m[6]*m[11]*m[12]-m[1]*m[7]*m[8]*m[14]
  68. -m[2]*m[4]*m[11]*m[13]-m[2]*m[5]*m[8]*m[15]-m[2]*m[7]*m[9]*m[12]
  69. -m[3]*m[4]*m[9]*m[14]-m[3]*m[5]*m[10]*m[12]-m[3]*m[6]*m[8]*m[13];
  70.  
  71.  
  72. if(det==0){condition=0;}
  73. if(condition){
  74. float invdet;
  75. invdet = 1/det;
  76. inversematrix[0] = invdet*(m[5]*m[10]*m[15]+m[6]*m[11]*m[13]+m[7]*m[9]*m[14]-m[5]*m[11]*m[14]-m[6]*m[9]*m[15]-m[7]*m[10]*m[13]);
  77. inversematrix[1] = invdet*(m[1]*m[11]*m[14]+m[2]*m[9]*m[15]+m[3]*m[10]*m[13]-m[1]*m[10]*m[15]-m[2]*m[11]*m[13]-m[3]*m[9]*m[14]);
  78. inversematrix[2] = invdet*(m[1]*m[6]*m[15]+m[2]*m[7]*m[13]+m[3]*m[5]*m[14]-m[1]*m[7]*m[14]-m[2]*m[5]*m[15]-m[3]*m[6]*m[13]);
  79. inversematrix[3] = invdet*(m[1]*m[7]*m[10]+m[2]*m[5]*m[11]+m[3]*m[6]*m[9]-m[1]*m[6]*m[11]-m[2]*m[7]*m[9]-m[3]*m[5]*m[10]);
  80.  
  81. inversematrix[4] = invdet*(m[4]*m[11]*m[14]+m[6]*m[8]*m[15]+m[7]*m[10]*m[12]-m[4]*m[10]*m[15]-m[6]*m[11]*m[12]-m[7]*m[8]*m[14]);
  82. inversematrix[5] = invdet*(m[0]*m[10]*m[15]+m[2]*m[11]*m[12]+m[3]*m[8]*m[14]-m[0]*m[11]*m[14]-m[2]*m[8]*m[15]-m[3]*m[10]*m[12]);
  83. inversematrix[6] = invdet*(m[0]*m[7]*m[14]+m[2]*m[4]*m[15]+m[3]*m[6]*m[12]-m[0]*m[6]*m[15]-m[2]*m[7]*m[12]-m[3]*m[4]*m[14]);
  84. inversematrix[7] = invdet*(m[0]*m[6]*m[11]+m[2]*m[7]*m[8]+m[3]*m[4]*m[10]-m[0]*m[7]*m[10]-m[2]*m[4]*m[11]-m[3]*m[6]*m[8]);
  85.  
  86. inversematrix[8] = invdet*(m[4]*m[9]*m[15]+m[5]*m[11]*m[12]+m[7]*m[8]*m[13]-m[4]*m[11]*m[13]-m[5]*m[8]*m[15]-m[7]*m[9]*m[12]);
  87. inversematrix[9] = invdet*(m[0]*m[11]*m[13]+m[1]*m[8]*m[15]+m[3]*m[9]*m[12]-m[0]*m[9]*m[15]-m[1]*m[11]*m[12]-m[3]*m[8]*m[13]);
  88. inversematrix[10] = invdet*(m[0]*m[5]*m[15]+m[1]*m[7]*m[12]+m[3]*m[4]*m[13]-m[0]*m[7]*m[13]-m[1]*m[4]*m[15]-m[3]*m[5]*m[12]);
  89. inversematrix[11] = invdet*(m[0]*m[7]*m[9]+m[1]*m[4]*m[11]+m[3]*m[5]*m[8]-m[0]*m[5]*m[11]-m[1]*m[7]*m[8]-m[3]*m[4]*m[9]);
  90.  
  91. inversematrix[12] = invdet*(m[4]*m[10]*m[13]+m[5]*m[8]*m[14]+m[6]*m[9]*m[12]-m[4]*m[9]*m[14]-m[5]*m[10]*m[12]-m[6]*m[8]*m[13]);
  92. inversematrix[13] = invdet*(m[0]*m[9]*m[14]+m[1]*m[10]*m[12]+m[2]*m[8]*m[13]-m[0]*m[10]*m[13]-m[1]*m[8]*m[14]-m[2]*m[9]*m[12]);
  93. inversematrix[14] = invdet*(m[0]*m[6]*m[13]+m[1]*m[4]*m[14]+m[2]*m[5]*m[12]-m[0]*m[5]*m[14]-m[1]*m[6]*m[12]-m[2]*m[4]*m[13]);
  94. inversematrix[15] = invdet*(m[0]*m[5]*m[10]+m[1]*m[6]*m[8]+m[2]*m[4]*m[9]-m[0]*m[6]*m[9]-m[1]*m[4]*m[10]-m[2]*m[5]*m[8]);
  95.  
  96. n=0;a=1;b=1;
  97. for(a=1;a<5;a++){
  98.  
  99. for(b=1;b<5;b++){B[a][b]=inversematrix[n];
  100. if(b<4){n++;}
  101. }
  102. }
  103. printf("The inverse matrix is:\n");
  104. for(a=1;a<5;a++){
  105. for(b=1;b<5;b++)
  106. { if(0<=B[a][b]<=9){printf("%f ",B[a][b]);}
  107. else {printf("%f ",B[a][b]); } }
  108. printf("\n");
  109. }
  110.  
  111. }
  112. else {printf("The inverse matrix isn't exist");}
  113.  
  114. system("PAUSE");
  115. return 0;
  116. }
  117.  
  118.  
  119.  
  120.  
Success #stdin #stdout #stderr 0s 2020KB
stdin
Standard input is empty
stdout
The 4x4 matrix is:
 -3   28   14   52  
 62   35   36   39  
 58   31  -57   32  
 -6   37   38   27  


The transpose matrix is:
 -3   62   58   -6  
 28   35   31   37  
 14   36  -57   38  
 52   39   32   27  


The inverse matrix is:
-0.000000  -0.000000  -0.000000  0.037037  
0.037037  0.009437  0.015732  -0.028232  
-0.028232  -0.078946  -0.013875  0.012821  
0.012821  0.012179  0.007548  0.015000  
stderr
sh: 1: PAUSE: not found