Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6.  
  7.  
  8. void dump(int r1, int r2, int **m){
  9. for(int i=0;i<r1;i++){
  10. for(int j=0;j<r2;j++){
  11. cout << m[i][j] << " ";
  12. }
  13. cout << endl;
  14. }
  15. }
  16.  
  17. void _tintil(int r1, int r2, int **m){
  18. for(int i=0;i<r1;i++){
  19. for(int j=0;j<r2;j++){
  20. m[i][j] =0;
  21. }
  22. }
  23. }
  24.  
  25. int _tBaies(int r1, int r2, int **m){
  26.  
  27. double **kopi_ma;
  28. kopi_ma = new double *[r1];
  29. for(int i = 0;i<r1;i++)
  30. kopi_ma[i] = new double [r2];
  31.  
  32.  
  33. for(int i = 0;i<r1;i++)
  34. for(int j = 0;j<r2;j++)
  35. kopi_ma[i][j]=m[i][j]/(double)r1;
  36.  
  37. /*
  38. for(int i=0;i<r1;i++){
  39. for(int j=0;j<r2;j++){
  40. cout << kopi_ma[i][j] << " " ;
  41. }
  42. cout << endl;
  43. }
  44. */
  45. double *max_str;
  46. max_str = new double [r1];
  47.  
  48. for(int j=0;j<r1;j++){
  49. max_str[j]=0;
  50. }
  51.  
  52.  
  53. for(int i=0;i<r1;i++){
  54. for(int j=0;j<r2;j++){
  55. max_str[i]+=kopi_ma[i][j];
  56. }
  57. }
  58.  
  59.  
  60.  
  61. /*for(int i=0;i<r1;i++){
  62. for(int j=0;j<r2;j++){
  63. cout << kopi_ma[i][j];
  64. }
  65. cout << endl;
  66. }
  67. cout << endl;
  68. for(int i=0;i<r2;i++){
  69. cout << max_str[i] << " " ;
  70. }
  71. cout << endl;
  72. */
  73.  
  74. double max=0;
  75. int strok=0;
  76. for(int i=0;i<r1;i++){
  77. if (max < max_str[i]){
  78. max = max_str[i];
  79. strok=i;
  80. }
  81. }
  82. return strok+1;
  83.  
  84. }
  85. int _tWald(int r1, int r2, int **m){
  86. // min max aij
  87.  
  88. int min=1000;
  89. int *min_str;
  90. min_str = new int [r2];
  91. for(int i=0;i<r1;i++){
  92. for(int j=0;j<r2;j++){
  93. if (min>m[i][j])
  94. min = m[i][j];
  95. }
  96. min_str[i]=min;
  97. min=1000;
  98. }
  99.  
  100. ///for(int i=0;i<r1;i++)
  101. // cout << min_str[i] << " " ;
  102.  
  103. int max=0,strok=0;
  104. for(int i=0;i<r1;i++){
  105. if (max<min_str[i]){
  106. max = min_str[i];
  107. strok=i;
  108. }
  109. }
  110. return strok+1;
  111.  
  112. }
  113. int _tSevidj(int r1, int r2, int **m){
  114.  
  115. int **ma;
  116. ma = new int *[r1];
  117. for(int i = 0;i<r1;i++)
  118. ma[i] = new int [r2];
  119.  
  120. int max=0,strok=0;
  121.  
  122.  
  123. for(int i=0;i<r2;i++){
  124. for(int j=0;j<r1;j++){
  125. if (max<m[j][i])
  126. max=m[j][i];
  127. }
  128. for(int j=0;j<r1;j++)
  129. ma[j][i]=max-m[j][i];
  130. max=0;
  131. }
  132.  
  133. int *max_str;
  134. max_str = new int [r2];
  135.  
  136. max=0;
  137. for(int i=0;i<r1;i++){
  138. for(int j=0;j<r2;j++){
  139. if (max<ma[i][j])
  140. max = ma[i][j];
  141. }
  142. max_str[i]=max;
  143. max=0;
  144. }
  145.  
  146. int min=1000;
  147. strok=0;
  148. for(int i=0;i<r1;i++){
  149. if (min > max_str[i]){
  150. min = max_str[i];
  151. strok=i;
  152. }
  153. }
  154. return strok+1;
  155. }
  156. int _tGurvic(int r1, int r2, int **m){
  157.  
  158. double *maxJ;
  159. maxJ = new double [r1];
  160.  
  161. for(int j=0;j<r1;j++){
  162. maxJ[j]=0;
  163. }
  164. double *minJ;
  165. minJ = new double [r1];
  166.  
  167. for(int j=0;j<r1;j++){
  168. minJ[j]=1000;
  169. }
  170.  
  171. for(int i=0;i<r1;i++){
  172. for(int j=0;j<r2;j++){
  173. if(maxJ[i]<m[i][j])
  174. maxJ[i]=m[i][j];
  175. }
  176. }
  177.  
  178. for(int i=0;i<r1;i++){
  179. for(int j=0;j<r2;j++){
  180. if(minJ[i]>m[i][j])
  181. minJ[i]=m[i][j];
  182. }
  183. }
  184.  
  185. /*
  186. for(int i=0;i<r1;i++){
  187. cout << minJ[i] << " " ;
  188. }
  189. cout << endl;
  190. for(int i=0;i<r1;i++){
  191. cout << maxJ[i] << " " ;
  192. }
  193.  
  194. */
  195.  
  196. double *max;
  197. max = new double [r1];
  198.  
  199.  
  200. double y=0.5;
  201. for(int i=0;i<r1;i++){
  202. max[i]= y * minJ[i] + (1-y) * maxJ[i];
  203. }
  204. /*
  205. for(int i=0;i<r1;i++){
  206. cout << max[i] << " " ;
  207. }
  208. */
  209.  
  210. double max1=0;int strok=0;
  211. for(int i=0;i<r1;i++){
  212. if (max1<max[i]){
  213. max1 = max[i];
  214. strok=i;
  215. }
  216. }
  217. return strok+1;
  218. }
  219.  
  220. int main()
  221. {
  222. int r1,r2;
  223.  
  224. cin >> r1 >> r2;
  225.  
  226. int **matrix;
  227.  
  228. matrix = new int *[r1];
  229.  
  230. for(int i = 0;i<r1;i++)
  231. matrix[i] = new int [r2];
  232.  
  233. _tintil(r1, r2,matrix);
  234.  
  235. ifstream read_file("input.txt");
  236.  
  237. for(int i=0;i<r1;i++){
  238. for(int j=0;j<r2;j++){
  239. read_file >> matrix[i][j] ;
  240. }
  241. }
  242.  
  243. read_file.close();
  244.  
  245. dump(r1, r2,matrix);
  246.  
  247.  
  248. int Wald = _tWald(r1, r2,matrix);
  249. cout << "По критерию Вальда вам нужно выбрать стратегию № " << Wald << endl;
  250. int Sevidj = _tSevidj(r1, r2,matrix);
  251. cout << "По критерию Сэвиджа вам нужно выбрать стратегию № " << Sevidj << endl;
  252. int Gurvic = _tGurvic(r1, r2,matrix);
  253. cout << "По критерию Гурвица вам нужно выбрать стратегию № " << Gurvic << endl;
  254. int Baies = _tBaies(r1, r2,matrix);
  255. cout << "По критерию Байеса вам нужно выбрать стратегию № " << Baies << endl;
  256.  
  257.  
  258. for(int i = 0;i<r1;i++)
  259. free(matrix[i]);
  260.  
  261. free(matrix);
  262. return 0;
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement