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

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

Ответ:
mihksy17
mihksy17
27.08.2020 01:48
#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(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?