Advertisement
dxvmxnd

Untitled

Oct 29th, 2023
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.54 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <sstream>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7.  
  8. int matrixcout(int** matrix, int sizeI, int sizeJ) {
  9.  
  10. int sum;
  11. int maxsum;
  12.  
  13. sum = 0;
  14. maxsum = 0;
  15. for (int i = 0; i < sizeI; i++) {
  16. for (int j = 0; j < sizeJ; j++) {
  17. sum = sum + abs(matrix[i][j]);
  18. }
  19. if (sum > maxsum) {
  20. maxsum = sum;
  21. }
  22. sum = 0;
  23. }
  24. return maxsum;
  25. }
  26.  
  27. void fromfile() {
  28. cout << “При записи данных из файла учтите, что на первой строке написано количество строк матрицы, на второй - количество столбцов, а далее с новой строки прописывается сама матрица” << endl;
  29.  
  30. bool isIncorrect;
  31. int** matrix = nullptr;
  32. int sizeI;
  33. int sizeJ;
  34. const string path = "C:\\Users\\Рустамчик\\Desktop\\ЛАБА 2\\Плюсы\\3\\L2_3_D\\input.txt";
  35.  
  36.  
  37. isIncorrect = false;
  38. sizeI = 0;
  39. sizeJ = 0;
  40.  
  41. cout << "Открытие файла..." << endl;
  42. ifstream fin(path);
  43. if (fin.is_open()) {
  44. fin >> sizeI;
  45. fin >> sizeJ;
  46. if (cin.fail() or (sizeI < 1) or (sizeJ < 1)) {
  47. isIncorrect = true;
  48. cout << "Данные введены некорректно" << endl;
  49. cin.clear();
  50. while (cin.get() != '\n');
  51. }
  52. matrix = new int* [sizeI];
  53. for (int i = 0; i < sizeI; i++) {
  54. matrix[i] = new int[sizeJ];
  55. for (int j = 0; j < sizeJ; j++) {
  56. fin >> matrix[i][j];
  57. }
  58. }
  59. fin.close();
  60.  
  61. cout << "Вывод матрицы: " << endl;
  62. for (int i = 0; i < sizeI; i++) {
  63. ;
  64. for (int j = 0; j < sizeJ; j++) {
  65. cout << matrix[i][j] << " ";
  66. }
  67. cout << "\n";
  68. }
  69.  
  70. int maxsum = matrixcout(matrix, sizeI, sizeJ);
  71.  
  72.  
  73. cout << "Максимальная сумма модулей элементов строки: " << maxsum;
  74.  
  75.  
  76. ofstream fout(path, fstream::app);
  77. cout << "\nЗапись ответа в файл.." << endl;
  78. if (fout.is_open()) {
  79. fout << "\nМаксимальная сумма модулей элементов строки: " << maxsum;
  80. }
  81. fout.close();
  82. }
  83. else {
  84. cout << "Ошибка открытия файла" << endl;
  85. isIncorrect = true;
  86. }
  87.  
  88. fin.close();
  89.  
  90.  
  91.  
  92.  
  93. delete[] matrix;
  94. }
  95.  
  96. void fromconsole() {
  97.  
  98. bool isIncorrect;
  99. int** matrix = nullptr;
  100.  
  101. int sizeI;
  102. sizeI = 0;
  103. do {
  104. isIncorrect = false;
  105. cout << "Введите количество строк в матрице" << endl;
  106. cin >> sizeI;
  107. if (cin.fail() or (sizeI < 1)) {
  108. isIncorrect = true;
  109. cout << "Данные введены некорректно" << endl;
  110. cin.clear();
  111. while (cin.get() != '\n');
  112. }
  113. } while (isIncorrect);
  114.  
  115. int sizeJ;
  116. sizeJ = 0;
  117. do {
  118. isIncorrect = false;
  119. cout << "Введите количество столбцов в матрице" << endl;
  120. cin >> sizeJ;
  121. if (cin.fail() or (sizeJ < 1)) {
  122. isIncorrect = true;
  123. cout << "Данные введены некорректно" << endl;
  124. cin.clear();
  125. while (cin.get() != '\n');
  126. }
  127. } while (isIncorrect);
  128.  
  129. matrix = new int* [sizeI];
  130.  
  131. for (int i = 0; i < sizeI; i++) {
  132. matrix[i] = new int[sizeJ];
  133. for (int j = 0; j < sizeJ; j++) {
  134. do {
  135. isIncorrect = false;
  136. cout << "Введите элемент матрицы с адресом " << (i + 1) << "," << (j + 1) << endl;
  137. cin >> matrix[i][j];
  138. if (cin.fail()) {
  139. isIncorrect = true;
  140. cout << "Данные введены некорректно" << endl;
  141. cin.clear();
  142. while (cin.get() != '\n');
  143. }
  144. } while (isIncorrect);
  145. }
  146. }
  147.  
  148. cout << "Вывод матрицы: " << endl;
  149. for (int i = 0; i < sizeI; i++) {
  150. ;
  151. for (int j = 0; j < sizeJ; j++) {
  152. cout << matrix[i][j] << " ";
  153. }
  154. cout << "\n";
  155. }
  156.  
  157. int maxsum;
  158. maxsum = matrixcout(matrix, sizeI, sizeJ);
  159. cout << "Максимальная сумма модулей элементов строки: " << maxsum;
  160.  
  161. delete[] matrix;
  162.  
  163. }
  164.  
  165.  
  166. int main() {
  167. setlocale(LC_ALL, "Rus");
  168. cout << "Данная программа находит наибольшую сумму модулей элементов строк матрицы." << endl;
  169.  
  170. bool isIncorrect;
  171. string choice;
  172. cout << "Выберите, откуда должны выводиться данные." << endl;
  173. do {
  174. isIncorrect = false;
  175. cout << "Напишите ONE, если с консоли. TWO, если с файла." << endl;
  176. cin >> choice;
  177. if ((choice != "ONE") and (choice != "TWO")) {
  178. isIncorrect = true;
  179. cout << "Данные введены некорректно" << endl;
  180. }
  181. } while (isIncorrect);
  182. if (choice == "ONE") {
  183. fromconsole();
  184. }
  185. else {
  186. fromfile();
  187. }
  188. return 0;
  189. }
  190. }
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement