С++ Допоможіть будь ласка, срок завтра(
У одновимірному масиві, що складається з дійсних елементів,
обчислити: 1) номер максимального по модулю елемента масиву; 2) суму
елементів масиву, розташованих після першого позитивного елементу.
Перетворити масив таким чином, щоб спочатку розташовувалися всі елементи,
ціла частина яких лежить в інтервалі [a, b], а потім - всі інші.
Ответы
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--;
}
}
Відповідь:
#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;
}