Перестановка элементов в массиве
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Дан массив размером n<20, как поменять элементы относительно элемента(ов), находящихся по середине? Еще нужно учесть, что массив может состоять как из четного, так и нечетного кол-ва элементов.
Код: Выделить всё
#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();
}
-
- Сообщения: 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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Код: Выделить всё
for(int i=0; i<n/2; i++)
{
q = a[i];
a[i] = a[n-i-1];
a[n-i-1] = q;
};