Перестановка элементов в массиве

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
silencer
Сообщения: 7
Зарегистрирован: 07 мар 2011, 20:58

Дан массив размером n<20, как поменять элементы относительно элемента(ов), находящихся по середине? Еще нужно учесть, что массив может состоять как из четного, так и нечетного кол-ва элементов.
silencer
Сообщения: 7
Зарегистрирован: 07 мар 2011, 20:58

Код: Выделить всё

#include <stdio.h>
#include <conio.h>
#define n 7

void main()
{
int q;
int a[n]={1, 2, 3, 4, 5, 6, 7};
for(int i=0; i<n;i++)
   {
   q=a[i];
   a[i]=a[i-n+1];
   a[i-n+1]=q;
   }

for(i=0;i<n;i++)
   printf("%d ",a[i]);
   getch();
}
Выдает какие-то мусорные значения, почему?
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

=> (i-n+1) при i = 0, n = 7 индекс будет равен -6; ничего не настораживает? :)
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

В корень проблемы зришь, дружище :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Код: Выделить всё

for(int i=0; i<n/2; i++)
{
   q = a[i];
   a[i] = a[n-i-1];
   a[n-i-1] = q;
};
Ответить