• Предмет: Информатика
  • Автор: rxsslide
  • Вопрос задан 5 месяцев назад

С++ Потрібен код, допоможіть будь ласка
У одновимірному масиві, що складається з дійсних елементів,
обчислити: 1) номер максимального по модулю елемента масиву; 2) суму
елементів масиву, розташованих після першого позитивного елементу.
Перетворити масив таким чином, щоб спочатку розташовувалися всі елементи,
ціла частина яких лежить в інтервалі [a, b], а потім - всі інші.

Ответы

Ответ дал: asilvejstruk
1

Вот код на C++, который решает поставленные задачи:

#include <iostream>

using namespace std;

int main() {

   const int N = 10;

   double arr[N] = {1.5, -2.3, 3.1, -4.2, 5.4, -6.5, 7.8, -8.9, 9.0, -10.1};

   double max = 0, sum = 0;

   int max_index = 0;

   int a = 2, b = 7;

   int count = 0;

   for (int i = 0; i < N; i++) {

       if (abs(arr[i]) > abs(max)) {

           max = arr[i];

           max_index = i;

       }

       if (arr[i] > 0) {

           for (int j = i + 1; j < N; j++) {

               sum += arr[j];

           }

           break;

       }

       if ((int)arr[i] >= a && (int)arr[i] <= b) {

           count++;

       }

   }

   cout << "1) Номер максимального по модулю елемента масиву: " << max_index << endl;

   cout << "2) Сума елементів масиву, розташованих після першого позитивного елементу: " << sum << endl;

   for (int i = 0; i < count; i++) {

       for (int j = 0; j < N; j++) {

           if ((int)arr[j] >= a && (int)arr[j] <= b) {

               swap(arr[i], arr[j]);

               break;

           }

       }

   }

   for (int i = count; i < N; i++) {

       for (int j = count; j < N; j++) {

           if ((int)arr[j] < a || (int)arr[j] > b) {

               swap(arr[i], arr[j]);

               break;

           }

       }

   }

   cout << "Перетворений масив: ";

   for (int i = 0; i < N; i++) {

       cout << arr[i] << " ";

   }

   cout << endl;

   return 0;

}

Вас заинтересует