Advertisement
Guest User

laba 2

a guest
Mar 26th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.11 KB | None | 0 0
  1. #include<iostream>
  2.  
  3. #define SizeArray 3
  4.  
  5. using namespace std;
  6.  
  7. double fDet(double flArray[SizeArray][SizeArray])
  8. {
  9. double lfDet;
  10. lfDet = flArray[0][0] * flArray[1][1] * flArray[2][2] + flArray[1][0] * flArray[2][1] * flArray[0][2] + flArray[0][1] * flArray[1][2] * flArray[2][0] - flArray[0][2] * flArray[1][1] * flArray[2][0] - flArray[0][0] * flArray[1][2] * flArray[2][1] - flArray[0][1] * flArray[1][0] * flArray[2][2];
  11. return(lfDet);
  12. }
  13.  
  14. void fMatr(double flArray[SizeArray][SizeArray],double flBArr[SizeArray], double *flXArr, char chFlag)
  15. {
  16. double lfTrArr[SizeArray][SizeArray];
  17.  
  18. lfTrArr[0][0] = flArray[1][1] * flArray[2][2] - flArray[1][2] * flArray[2][1];
  19. lfTrArr[1][0] = (flArray[1][0] * flArray[2][2] - flArray[2][0] * flArray[1][2])*(-1);
  20. lfTrArr[2][0] = flArray[1][0] * flArray[2][1] - flArray[2][0] * flArray[1][1];
  21. lfTrArr[0][1] = (flArray[0][1] * flArray[2][2] - flArray[2][1] * flArray[0][2])*(-1);
  22. lfTrArr[1][1] = flArray[0][0] * flArray[2][2] - flArray[2][0] * flArray[0][2];
  23. lfTrArr[2][1] = (flArray[0][0] * flArray[2][1] - flArray[2][0] * flArray[0][1])*(-1);
  24. lfTrArr[0][2] = flArray[0][1] * flArray[1][2] - flArray[1][1] * flArray[0][2];
  25. lfTrArr[1][2] = (flArray[0][0] * flArray[1][2] - flArray[1][0] * flArray[0][2])*(-1);
  26. lfTrArr[2][2] = flArray[1][1] * flArray[0][0] - flArray[1][0] * flArray[0][1];
  27.  
  28. cout.width(-7);
  29. if (chFlag == 'y')
  30. {
  31. cout << "\ndet=" << fDet(flArray) << endl;
  32. for (int i = 0; i < SizeArray; ++i)
  33. {
  34. cout << endl;
  35. for (int j = 0; j < SizeArray; ++j)
  36. {
  37. cout << lfTrArr[i][j]/fDet(flArray) << "\t";
  38. }
  39. }
  40. }
  41.  
  42. flXArr[0] = (lfTrArr[0][0] * flBArr[0] + lfTrArr[0][1] * flBArr[1] + lfTrArr[0][2] * flBArr[2]) / fDet(flArray);
  43. flXArr[1] = (lfTrArr[1][0] * flBArr[0] + lfTrArr[1][1] * flBArr[1] + lfTrArr[1][2] * flBArr[2]) / fDet(flArray);
  44. flXArr[2] = (lfTrArr[2][0] * flBArr[0] + lfTrArr[2][1] * flBArr[1] + lfTrArr[2][2] * flBArr[2]) / fDet(flArray);
  45. }
  46.  
  47. void fKram(double flArray[SizeArray][SizeArray], double flBArr[SizeArray], double *flXArr, char chFlag)
  48. {
  49. double lfTempArr[SizeArray][SizeArray];
  50.  
  51. for (int i = 0; i < SizeArray; ++i)
  52. {
  53. for (int j = 0; j < SizeArray; ++j)
  54. {
  55. lfTempArr[i][j] = flArray[i][j];
  56. }
  57. }
  58. for (int j = 0; j < SizeArray; ++j)
  59. {
  60. lfTempArr[j][0] = flBArr[j];
  61. }
  62. flXArr[0] = fDet(lfTempArr) / fDet(flArray);
  63. if (chFlag == 'y')
  64. {
  65. cout << "det1=" << fDet(lfTempArr) << endl;
  66. }
  67.  
  68. for (int i = 0; i < SizeArray; ++i)
  69. {
  70. for (int j = 0; j < SizeArray; ++j)
  71. {
  72. lfTempArr[i][j] = flArray[i][j];
  73. }
  74. }
  75. for (int j = 0; j < SizeArray; ++j)
  76. {
  77. lfTempArr[j][1] = flBArr[j];
  78. }
  79. flXArr[1] = fDet(lfTempArr) / fDet(flArray);
  80. if (chFlag == 'y')
  81. {
  82. cout << "det2= " << fDet(lfTempArr) << endl;
  83. }
  84.  
  85. for (int i = 0; i < SizeArray; ++i)
  86. {
  87. for (int j = 0; j < SizeArray; ++j)
  88. {
  89. lfTempArr[i][j] = flArray[i][j];
  90. }
  91. }
  92. for (int j = 0; j < SizeArray; ++j)
  93. {
  94. lfTempArr[j][2] = flBArr[j];
  95. }
  96. flXArr[2] = fDet(lfTempArr) / fDet(flArray);
  97. if (chFlag == 'y')
  98. {
  99. cout << "det3= " << fDet(lfTempArr) << endl;
  100. }
  101. }
  102.  
  103. int main()
  104. {
  105. double flArray[SizeArray][SizeArray] = { {0.46,1.72,2.53},{1.53,-2.32,-1.83},{0.75,0.86,3.72} }, flBArr[SizeArray] = { 2.44,2.83,1.06 }, flXArr[SizeArray];
  106. char chFlag;
  107. cout << "Enter y to output all actions:" << endl;
  108. chFlag=cin.get();
  109. fMatr(flArray, flBArr, flXArr, chFlag);
  110. cout << "\n\nMATRIX method:\n\tx1=" << flXArr[0] << "\n" << "\tx2= " << flXArr[1] << "\n" << "\tx3= " << flXArr[2] << endl;
  111. cout << "\n\t\t******\n" << endl;
  112. fKram(flArray, flBArr, flXArr, chFlag);
  113. cout << "\nKRAMER method:\n\tx1=" << flXArr[0] << "\n" << "\tx2= " << flXArr[1] << "\n" << "\tx3= " << flXArr[2] << endl;
  114.  
  115. cin.get();
  116. cin.get();
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement