Вопрос задан 26.10.2023 в 17:00.
Предмет Информатика.
Спрашивает Сабитовна Жайна.
Дано целочисленный массив из n элементов. Проверить, если массив является симметричным, то в каждой
из его половин изменить порядок элементов на обратный. В противном случае его половины поменять местами. С++Ответы на вопрос
Отвечает Заблоцкая Ирина.
#include <iostream>
#include <locale>
using namespace std;
int main()
{
setlocale(LC_ALL,"Rus");
int n;
cout << "n = ", cin >> n;
int *A = new int[n];
cout << "Пожалуйста, введите массив из "<< n <<" элементов:\n";
for (int i = 0; i < n; i++)
{
cin >> A[i];
}
cout <<"\nПолучившийся массив: [";
for (int i = 0; i < n; i++)
{
cout << " " << A[i];
}
bool Simmetriya = true;
for (int i = 0; i <= (int)(n/2); i++)
{
if (A[i] != A[n-i-1])
{
Simmetriya = false;
break;
}
}
cout << (Simmetriya?" ] симметричен":" ] НЕ симметричен") << "\n";
if (Simmetriya)
{
for (int i = 0; i < (int)(n/2); i++)
{
for (int j = i; j < (int)(n/2); j++)
{
swap(A[i],A[j]);
swap(A[n-i-1],A[n-j-1]);
}
}
}
else
{
for (int i = 0; i < (int)(n/2); i++)
{
swap(A[i],A[(int)(n/2)+n%2+i]);
}
}
for (int i = 0; i < n; i++)
{
cout << A[i] << " ";
}
cout << '\n';
return 0;
}
#include <locale>
using namespace std;
int main()
{
setlocale(LC_ALL,"Rus");
int n;
cout << "n = ", cin >> n;
int *A = new int[n];
cout << "Пожалуйста, введите массив из "<< n <<" элементов:\n";
for (int i = 0; i < n; i++)
{
cin >> A[i];
}
cout <<"\nПолучившийся массив: [";
for (int i = 0; i < n; i++)
{
cout << " " << A[i];
}
bool Simmetriya = true;
for (int i = 0; i <= (int)(n/2); i++)
{
if (A[i] != A[n-i-1])
{
Simmetriya = false;
break;
}
}
cout << (Simmetriya?" ] симметричен":" ] НЕ симметричен") << "\n";
if (Simmetriya)
{
for (int i = 0; i < (int)(n/2); i++)
{
for (int j = i; j < (int)(n/2); j++)
{
swap(A[i],A[j]);
swap(A[n-i-1],A[n-j-1]);
}
}
}
else
{
for (int i = 0; i < (int)(n/2); i++)
{
swap(A[i],A[(int)(n/2)+n%2+i]);
}
}
for (int i = 0; i < n; i++)
{
cout << A[i] << " ";
}
cout << '\n';
return 0;
}
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для решения этой задачи вы можете использовать следующий код на C++:
cpp#include <iostream>
#include <vector>
#include <algorithm>
int main() {
int n;
std::cout << "Введите размер массива: ";
std::cin >> n;
std::vector<int> arr(n);
std::cout << "Введите элементы массива: ";
for (int i = 0; i < n; ++i) {
std::cin >> arr[i];
}
bool isSymmetric = true;
for (int i = 0, j = n - 1; i < j; ++i, --j) {
if (arr[i] != arr[j]) {
isSymmetric = false;
break;
}
}
if (isSymmetric) {
// Если массив симметричен, меняем порядок элементов в каждой половине на обратный
std::reverse(arr.begin(), arr.begin() + n / 2);
std::reverse(arr.begin() + n / 2, arr.end());
} else {
// Если массив не симметричен, меняем местами его половины
std::rotate(arr.begin(), arr.begin() + n / 2, arr.end());
}
std::cout << "Итоговый массив: ";
for (int i = 0; i < n; ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
Этот код сначала проверяет, является ли массив симметричным, и в зависимости от этого выполняет нужные операции. Если массив симметричен, он изменяет порядок элементов в каждой половине на обратный. В противном случае он меняет местами половины массива.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Информатика 68
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
