Вопрос задан 26.10.2023 в 17:00. Предмет Информатика. Спрашивает Сабитовна Жайна.

Дано целочисленный массив из n элементов. Проверить, если массив является симметричным, то в каждой

из его половин изменить порядок элементов на обратный. В противном случае его половины поменять местами. С++
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Заблоцкая Ирина.
#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;
}
0 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; }

Этот код сначала проверяет, является ли массив симметричным, и в зависимости от этого выполняет нужные операции. Если массив симметричен, он изменяет порядок элементов в каждой половине на обратный. В противном случае он меняет местами половины массива.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос