
Представьте, что перед нами стоят бочки с номерами на них. Нас сильно просят переставить их местами
так, что нечетные бочки остались на месте, а четные шли в обратном порядке исходному. Язык си или с++

Ответы на вопрос

#include <iostream>
using namespace std;
int main(){
int n, m=0, r;
cin>>n;
int arr[n], arrb[n];
for (int i=0; i<n; ++i) {
cin>>arr[i];
if(arr[i]%2==0) {
arrb[m]=i;
++m;
}
}
--m;
r=m;
for (int i=0; i<=m/2; ++i) {
int buf = arr[arrb[i]];
arr[arrb[i]]=arr[arrb[r]];
arr[arrb[r]]=buf;
--r;
}
for (int i=0; i<n; ++i) cout<<arr[i]<<" ";
}
Будут вопросы по решению - пиши.



#include <iostream>
using namespace std;
int main() {
int n,k,m;
cout<<"n = "; cin>>n; k=n-1;
int a[n];
for (int i=0; i<n; i++) cin>>a[i];
for (int i=0; i<n; i++) {
if (a[i]%2==0) {
while ((a[k]%2!=0) && (k>i)) k--;
if (k>i) {
m=a[i]; a[i]=a[k]; a[k]=m; k--;
}
}
cout<<a[i]<<" ";
}
cout<<endl;
system("pause");
return 0;
}
n = 11
2 3 5 7 4 6 8 9 13 10 11
10 3 5 7 8 6 4 9 13 2 11



Вот пример решения данной задачи на языке C++:
cpp#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// Создаем вектор с номерами бочек
vector<int> barrels = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// Перемещаем четные бочки в конец вектора
vector<int> even_barrels, odd_barrels;
for (int i = 0; i < barrels.size(); i++) {
if (barrels[i] % 2 == 0) {
even_barrels.push_back(barrels[i]);
} else {
odd_barrels.push_back(barrels[i]);
}
}
barrels = odd_barrels;
barrels.insert(barrels.end(), even_barrels.begin(), even_barrels.end());
// Разворачиваем четные бочки
reverse(barrels.begin() + 1, barrels.end() - 1);
// Выводим результат
for (int i = 0; i < barrels.size(); i++) {
cout << barrels[i] << " ";
}
cout << endl;
return 0;
}
В данном решении мы создаем вектор barrels
с номерами бочек, затем разделяем его на два вектора - even_barrels
, в котором будут храниться четные номера, и odd_barrels
, в котором будут храниться нечетные номера. Затем мы собираем вектор barrels
обратно, помещая в него сначала все нечетные номера, а затем все четные номера.
Далее мы используем функцию reverse
из библиотеки <algorithm>
для разворота элементов вектора, начиная с первого четного элемента и заканчивая последним четным элементом.
Наконец, мы выводим полученный результат на экран.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili