Заполнить массив случайными числами в интервале [-100,100] и переставить элементы так, чтобы все положительные элементы стояли в начала массива, а все отрицательные и нули – в конце. Вычислите количество положительных элементов.
Пример:
Массив:
20 -90 15 -34 10 0
Результат:
20 15 10 -90 -34 0
Количество положительных элементов: 3

21 Апр 2020 в 19:48
334 +1
0
Ответы
1
include include

int main() {
srand(time(0));

const int size = 10;
int arr[size];
int positiveCount = 0;
for (int i = 0; i < size; i++) {
arr[i] = rand() % 201 - 100;
if (arr[i] > 0)
positiveCount++;
}
std::cout << "Массив:\n";
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
int startPos = 0;
int endPos = size - 1;
while (startPos < endPos) {
if (arr[startPos] <= 0) {
while (arr[endPos] <= 0 && startPos < endPos) {
endPos--;
}
if (startPos < endPos) {
std::swap(arr[startPos], arr[endPos]);
endPos--;
}
}
startPos++;
}
std::cout << "\nРезультат:\n";
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << "\nКоличество положительных элементов: " << positiveCount << std::endl;
return 0;

}

18 Апр 2024 в 13:30
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир