С++ Дан массив a из n целых чисел. Требуется поменять местами первый отрицательный и последний
положительный элементы массива. Если какого-то из этих элементов в массиве нет, то не изменять массив. Ноль считать положительным числом. Формат входных данных На первой строке записано натуральное число n (n<100) — размер массива. На следующей строке через пробел записаны n целых чисел ai (|ai|≤1000) — элементы массива. Формат выходных данных Требуется вывести n чисел — изменённый массив. входные данные 9 1 2 3 4 -9 10 12 14 15 выходные данные 1 2 3 4 15 10 12 14 -9Ответы на вопрос
Ответ:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, negativeIndex = 0, positiveIndex = 0, buf = 0;
bool a, b = false;
cin >> n;
int arr[n];
for(int i = 0; i < n; ++i){
cin >> arr[i];
}
for(int i = 0; i < n; ++i){
if(arr[i] < 0){
negativeIndex = i;
a = true;
break;
}
}
for(int i = n-1; i >= 0; --i){
if(arr[i] >= 0)
positiveIndex = i;
b = true;
break;
}
if(a && b){
buf = arr[negativeIndex];
arr[negativeIndex] = arr[positiveIndex];
arr[positiveIndex] = buf;
}
for(int i = 0; i < n; ++i){
cout << arr[i] << "\t";
}
return 0;
}
Для решения этой задачи вам нужно выполнить следующие шаги в C++:
- Прочитать входные данные: размер массива
nи сам массивa. - Найти первый отрицательный элемент и последний положительный элемент в массиве.
- Если оба элемента найдены, поменять их местами.
- Вывести измененный массив.
Вот C++ код для выполнения этих шагов:
cpp#include <iostream>
int main() {
int n;
std::cin >> n;
int a[1000];
for (int i = 0; i < n; i++) {
std::cin >> a[i];
}
int first_negative_index = -1;
int last_positive_index = -1;
// Находим первый отрицательный и последний положительный элемент
for (int i = 0; i < n; i++) {
if (a[i] < 0 && first_negative_index == -1) {
first_negative_index = i;
}
if (a[i] >= 0) {
last_positive_index = i;
}
}
// Проверяем, что оба элемента найдены
if (first_negative_index != -1 && last_positive_index != -1) {
// Меняем местами элементы
int temp = a[first_negative_index];
a[first_negative_index] = a[last_positive_index];
a[last_positive_index] = temp;
}
// Выводим измененный массив
for (int i = 0; i < n; i++) {
std::cout << a[i] << " ";
}
return 0;
}
При вводе ваших примеров входных данных (9 1 2 3 4 -9 10 12 14 15), код выведет ожидаемый результат (1 2 3 4 15 10 12 14 -9).
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
