Advertisement
Lavig

Другий семестр. Лабораторна робота №5-6 (Завдання 4)

Mar 6th, 2025
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. double max_arr_sum(double arr[], int len) {
  8.     vector<double> all_sums;
  9.     vector<vector<double>> all_arrays;
  10.     double temp_sum{}, max_sum{};
  11.     vector<double> temp_subarray;
  12.     for (int i = 0; i < len; i++) {
  13.         temp_sum += arr[i];
  14.         temp_subarray.push_back(arr[i]);
  15.         if (temp_sum <= 0) {
  16.             all_sums.push_back(temp_sum);
  17.             all_arrays.push_back(temp_subarray);
  18.             temp_sum = 0;
  19.             temp_subarray.clear();
  20.             continue;
  21.         }
  22.         else {
  23.             all_sums.push_back(temp_sum);
  24.             all_arrays.push_back(temp_subarray);
  25.         }
  26.     }
  27.     max_sum = all_sums[0];
  28.     int max_index = 0;
  29.     for (int i = 1; i < all_sums.size(); i++) {
  30.         if (all_sums[i] > max_sum) {
  31.             max_sum = all_sums[i];
  32.             max_index = i;
  33.         }
  34.     }
  35.     cout << "Максимальний підмасив: ";
  36.     for (int i = 0; i < all_arrays[max_index].size(); i++) {
  37.         cout << all_arrays[max_index][i] << " ";
  38.     }
  39.     cout << endl;
  40.     return max_sum;
  41. }
  42. int main()
  43. {
  44.     SetConsoleOutputCP(1251);
  45.     SetConsoleCP(1251);
  46.     int N{};
  47.     double total_product{ 1 };
  48.     string words_array[10]{ "перший", "другий", "третій", "четвертий", "п'ятий", "шостий", "сьомий", "восьмий", "дев'ятий", "десятий" };
  49.     while (true) {
  50.         cout << "Введіть бажану кількість елементів у масиві (від 2 до 10): ";
  51.         cin >> N;
  52.         if (cin.fail() || N < 2 || N > 10) {
  53.             cin.clear();
  54.             cin.ignore(32767, '\n');
  55.             cout << "Число було введено неправильно. Спробуйте ще раз!" << endl;
  56.             continue;
  57.         }
  58.         else {
  59.             break;
  60.         }
  61.     }
  62.     double* array = new double[N];
  63.     for (int i = 0; i < N; i++) {
  64.         while (true) {
  65.             cout << "Введіть " << words_array[i] << " елемент масиву: ";
  66.             cin >> array[i];
  67.             if (cin.fail()) {
  68.                 cin.clear();
  69.                 cin.ignore(32767, '\n');
  70.                 cout << "Число було введено неправильно. Спробуйте ще раз!" << endl;
  71.                 continue;
  72.             }
  73.             else {
  74.                 break;
  75.             }
  76.         }
  77.     }
  78.     cout << "Максимальна сума будь-яких підмасивів вихідного масиву: " << max_arr_sum(array, N);
  79.     delete[] array;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement