Advertisement
dxvmxnd

Untitled

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