Advertisement
Guest User

Untitled

a guest
Nov 18th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.51 KB | None | 0 0
  1. #include "pch.h"
  2. #include<iostream>
  3. #include<fstream>
  4. #include<cmath>
  5. #include<iomanip>
  6.  
  7. using namespace std;
  8.  
  9. int** create(ifstream &f, int n, int m)
  10. {
  11. int i, j;
  12. int **y = new int *[n];
  13. for (i = 0; i < n; i++)
  14. {
  15. y[i] = new int[m];
  16. }
  17. for (i = 0; i < n; i++)
  18. for (j = 0; j < m; j++)
  19. f >> y[i][j];
  20. return y;
  21. }
  22. double** create1(ifstream &f, int n, int m)
  23. {
  24. int i, j;
  25. double **y = new double *[n];
  26. for (i = 0; i < n; i++)
  27. {
  28. y[i] = new double[m];
  29. }
  30. for (i = 0; i < n; i++)
  31. for (j = 0; j < m; j++)
  32. f >> y[i][j];
  33. return y;
  34. }
  35. int kolznak(int a)
  36. {
  37. int k = 0;
  38. while (a != 0)
  39. {
  40. k++;
  41. a = a / 10;
  42. }
  43. return k;
  44. }
  45. int* mkzst(int** a, int n, int m)
  46. {
  47. int i, j, maxz;
  48. int *b = new int[m];
  49. for (j = 0; j < m; j++)
  50. {
  51. maxz = kolznak(a[0][j]);
  52. for (i = 0; i < n; i++)
  53. {
  54. if (kolznak(a[i][j]) > maxz)
  55. {
  56. maxz = kolznak(a[i][j]);
  57. }
  58. }
  59. b[j] = maxz;
  60. }
  61. return b;
  62. }
  63. void star(int k)
  64. {
  65. int i;
  66. for (i = 0; i < k + 1; i++)
  67. {
  68. cout << '*';
  69. }
  70. }
  71. void star1(int k)
  72. {
  73. cout << setw(k + 1) << '*';
  74. }
  75. void star2(int max, int k, int kz, int a)
  76. {
  77. int kzl, kzp;
  78. if (k == 1)
  79. {
  80. kzl = (max / 2) + 2;
  81. kzp = kz - kzl + 1;
  82. }
  83. else
  84. {
  85. if (max == k)
  86. {
  87. kzl = kz - 1;
  88. kzp = 2;
  89. }
  90. else
  91. {
  92. kzl = kz - (max - k);
  93. kzp = max - k + 1;
  94. }
  95. }
  96. cout << setw(kzl) << a << setw(kzp) << '*';
  97. }
  98. void table(int** a, int n, int m)
  99. {
  100. int i, j;
  101. int *b = new int[m];
  102. b = mkzst(a, n, m);
  103. cout << '*';
  104. for (j = 0; j < n; j++)
  105. {
  106. for (i = 0; i < m; i++)
  107. {
  108. star(b[i] + 2);
  109. }
  110. cout << endl << '*';
  111. for (i = 0; i < m; i++)
  112. {
  113. star1(b[i] + 2);
  114. }
  115. cout << endl << '*';
  116. for (i = 0; i < m; i++)
  117. {
  118. star2(b[i], kolznak(a[j][i]), b[i] + 2, a[j][i]);
  119. }
  120. cout << endl << '*';
  121. for (i = 0; i < m; i++)
  122. {
  123. star1(b[i] + 2);
  124. }
  125. cout << endl << '*';
  126. }
  127. for (i = 0; i < m; i++)
  128. {
  129. star(b[i] + 2);
  130. }
  131. }
  132. void sum(int **x, int **y, int **z, int n, int m)
  133. {
  134. int i, j;
  135. for (i = 0; i < n; i++)
  136. for (j = 0; j < m; j++)
  137. z[i][j] = x[i][j] + y[i][j];
  138. }
  139. void razn(int **x, int **y, int **z, int n, int m)
  140. {
  141. int i, j;
  142. for (i = 0; i < n; i++)
  143. for (j = 0; j < m; j++)
  144. z[i][j] = x[i][j] - y[i][j];
  145. }
  146. void mult(int **x, int**y, int**z, int n1, int m2, int m1)
  147. {
  148. int i, j, k;
  149. for (i = 0; i < n1; i++)
  150. for (j = 0; j < m2; j++)
  151. {
  152. z[i][j] = 0;
  153. for (k = 0; k < m1; k++)
  154. {
  155. z[i][j] += x[i][k] * y[k][j];
  156. }
  157. }
  158.  
  159. }
  160. int** trans(int **x, int n, int m)
  161. {
  162. int i, j, **r;
  163. r = new int*[m];
  164. for (i = 0; i < m; i++)
  165. r[i] = new int[n];
  166. for (i = 0; i < n; i++)
  167. for (j = 0; j < m; j++)
  168. {
  169. r[j][i] = x[i][j];
  170. }
  171. return r;
  172. }
  173. void multch(int **x, int a, int n, int m)
  174. {
  175. int i, j;
  176. for (i = 0; i < n; i++)
  177. for (j = 0; j < m; j++)
  178. x[i][j] *= a;
  179. }
  180. double det(double**x, int n)
  181. {
  182. int i, j, k;
  183. double d, a, b;
  184. d = 1;
  185. for (i = 0; i < n - 1; i++)
  186. {
  187. if (x[i][i] == 0)
  188. return 0;
  189. if (x[i][i] != 1)
  190. {
  191. b = x[i][i];
  192. d = d * b;
  193. for (j = i; j < n; j++)
  194. x[i][j] = x[i][j] / b;
  195. if (i == n - 1)
  196. x[i][i + 1] = x[i][i + 1] / b;
  197. for (j = i; j < n - 1; j++)
  198. {
  199. a = x[j + 1][i];
  200. for (k = i; k < n; k++)
  201. {
  202. x[j + 1][k] = x[j + 1][k] - (x[i][k] * a);
  203. }
  204. }
  205. }
  206. else
  207. {
  208. for (j = i; j < n - 1; j++)
  209. {
  210. a = x[j + 1][i];
  211. for (k = i; k < n; k++)
  212. {
  213. x[j + 1][k] = x[j + 1][k] - (x[i][k] * a);
  214. }
  215. }
  216. }
  217. }
  218. d *= x[n - 1][n - 1];
  219. return d;
  220. }
  221. void gld(int **x, int n)
  222. {
  223. for (int i = 0; i < n; i++)
  224. {
  225. cout << x[i][i] << ' ';
  226. }
  227. }
  228. void pbd(int **x, int n)
  229. {
  230. int i, j;
  231. j = 0;
  232. for (int i = n - 1; i >= 0 && j < n; i--)
  233. {
  234. cout << x[j][i] << ' ';
  235. j++;
  236. }
  237. }
  238. int main()
  239. {
  240. ifstream in("in1.txt");
  241. ifstream ina("ina.txt");
  242. ifstream inb("inb.txt");
  243. ifstream inf("inf.txt");
  244. ifstream ind("ind.txt");
  245. ifstream ind1("ind1.txt");
  246. int **a, **b, **c, **s, **f, n, m, n1, m1, n2, m2, n3, m3, n4, m4, n5, m5, i, j, mnoj;
  247. double **d, **d1;
  248. in >> n >> m;
  249. ina >> n1 >> m1;
  250. inb >> n2 >> m2;
  251. inf >> n3 >> m3;
  252. ind >> n4 >> m4;
  253. ind1 >> n5 >> m5;
  254. a = create(in, n, m);
  255. b = create(ina, n1, m1);
  256. c = create(inb, n2, m2);
  257. f = create(inf, n3, m3);
  258. d = create1(ind, n4, m4);
  259. d1 = create1(ind1, n5, m5);
  260. table(f, n3, m3);
  261. cout << endl;
  262. if ((n1 == n3) && (m1 == m3))
  263. {
  264. s = new int*[n1];
  265. for (i = 0; i < n1; i++)
  266. {
  267. s[i] = new int[m3];
  268. }
  269. sum(b, f, s, n1, m1);
  270. cout << "Sum = " << endl;
  271. table(s, n1, m1);
  272. cout << endl;
  273. }
  274. else
  275. cout << "Can`t sum A, B" << endl;
  276. if ((n1 == n3) && (m1 == m3))
  277. {
  278. s = new int*[n1];
  279. for (i = 0; i < n1; i++)
  280. {
  281. s[i] = new int[m3];
  282. }
  283. razn(b, f, s, n1, m1);
  284. cout << "Razn = " << endl;
  285. table(s, n1, m1);
  286. cout << endl;
  287. }
  288. else
  289. cout << "Can`t subtract A, B" << endl;
  290. if (m1 == n2)
  291. {
  292. s = new int*[n1];
  293. for (i = 0; i < n1; i++)
  294. {
  295. s[i] = new int[m2];
  296. }
  297. mult(b, c, s, n1, m2, m1);
  298. cout << "Mult = " << endl;
  299. table(s, n1, m2);
  300. cout << endl;
  301. }
  302. else
  303. cout << "Can`t mult A,B" << endl;
  304. s = new int*[n];
  305. for (i = 0; i < n; i++)
  306. {
  307. s[i] = new int[m];
  308. }
  309. cout << "Trans = " << endl;
  310. table(trans(a, n, m), m, n);
  311. cout << endl;
  312. cout << "Enter factor = ";
  313. cin >> mnoj;
  314. multch(a, mnoj, n, m);
  315. cout << "Multed on num = " << endl;
  316. table(a, n, m);
  317. cout << endl;
  318. cout << "Determenant1 = " << det(d, n4) << endl;
  319. cout << "Determenant2 = " << det(d1, n5) << endl;
  320. gld(b, n1);
  321. cout << endl;
  322. pbd(b, n1);
  323. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement