С++ Допоможіть будь ласка, срок завтра(

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

Ответы

Ответ дал: hagadf
1

1) Для обчислення номера максимального по модулю елемента масиву можна використати цикл for для перебору всіх елементів масиву та збереження номера та модуля максимального елемента. Наприклад:

int max_index = 0;

double max = 0.0;

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

   double current = abs(array[i]);

   if (current > max) {

       max = current;

       max_index = i;

   }

}

2) Для обчислення суми елементів масиву, розташованих після першого позитивного елементу можна використати цикл for для перебору елементів масиву з початку до кінця, за допомогою змінної flag визначати позицію першого позитивного елементу та додавати до суми всі подальші елементи, поки не закінчиться цикл. Наприклад:

int flag = 0;

double sum = 0.0;

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

   if (array[i] > 0 && flag == 0) {

       flag = 1;

   }

   if (flag == 1) {

       sum += array[i];

   }

}

3) Для перетворення масиву таким чином, щоб спочатку розташовувалися всі елементи, ціла частина яких лежить в інтервалі [a, b], а потім - всі інші, можна використати сортування вставками. Наприклад:

for (int i = 1; i < size; i++) {

   int j = i;

   while (j > 0 && (array[j - 1] % 1 < a || array[j - 1] % 1 > b)) {

       int temp = array[j];

       array[j] = array[j - 1];

       array[j - 1] = temp;

       j--;

   }

}


rxsslide: А можете повністю код написати? я просто не розбираюся у С++ взагалі
Ответ дал: vdhhbhv57eb
1

Відповідь:

#include <iostream>

#include <cmath>

using namespace std;

int main() {

   int n;

   cin >> n;

   double arr[n];

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

       cin >> arr[i];

   }

   //1) Знаходить номер максимального елемента за його модулем

   double maxMod = 0;

   int maxModIndex = 0;

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

       double currentMod = abs(arr[i]);

       if (currentMod > maxMod) {

           maxMod = currentMod;

           maxModIndex = i;

       }

   }

   cout << "Номер максимального елемента за модулем дорівнює: " << maxModIndex << endl;

   

   //2) Знаходить суму елементів масиву, розташованих після першого позитивного елемента

   double sum = 0;

   bool firstPositiveFound = false;

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

       if (!firstPositiveFound && arr[i] > 0) {

           firstPositiveFound = true;

       }

       if (firstPositiveFound) {

           sum += arr[i];

       }

   }

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

   

   //3) Перерастошування массива

   double temp[n];

   int j = 0;

   int k = 0;

   int a, b;

   cin>>a>>b;

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

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

           temp[j] = arr[i];

           j++;

       } else {

           temp[n/2 + k] = arr[i];

           k++;

       }

   }

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

       arr[i] = temp[i];

   }

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

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

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

   }

   return 0;

}

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