Форум программистов, компьютерный форум CyberForum.ru

переставить елементы массива - C++

Войти
Регистрация
Восстановить пароль
 
Duran
0 / 0 / 0
Регистрация: 21.06.2009
Сообщений: 13
02.07.2009, 18:21     переставить елементы массива #1
Задали задачу:
В массиве переставить значения в обратном порядке.
Тоесть(1,2,3,4,5)надо перевернуть(5,4,3,2,1)
Написал код ,вроде должен работать, но не работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const int n=5;  
int a[n]={1,2,3,4,5},buf;   
 for(int i=0;i<n/2;i++)
{
    bool f=true;    
    for(int j=n-1;j>n/2;j--)
    {           
    buf=a[i];
    a[i]=a[j];
    a[j]=buf;
    f=false;
    break; //проблема в этом брейке                 
    }
    if(f)
   {
    cout<<'\n'<<a[i]<<'\n';
   }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2009, 18:21     переставить елементы массива
Посмотрите здесь:

C++ заменить отрицательные елементы массива
C++ Переставить местами ni и nj строки массива A
Как сформировать из массива х массив y что бы елементы выводились в массиве до минимального значения? C++
Переставить столбцы массива C++
C++ Если елементы массива соседние одинаковы то один из них заменяется на 0 а другой увеличиваетмя на один
елементы массива C++
Переставить соседние элементы массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 18:32     переставить елементы массива #2
Подумай над алгоритмом, тут два цикла не нужны. и брэйки тоже
Duran
0 / 0 / 0
Регистрация: 21.06.2009
Сообщений: 13
02.07.2009, 18:36  [ТС]     переставить елементы массива #3
Цитата Сообщение от Vourhey Посмотреть сообщение
Подумай над алгоритмом, тут два цикла не нужны. и брэйки тоже
Увы я только до этого и додумался.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 18:38     переставить елементы массива #4
например, ты не думал "на фига мне две переменные цикла и два цикла, если элементу с индексом i есть зеркальный элемент с индексом n-i". Думай.
Duran
0 / 0 / 0
Регистрация: 21.06.2009
Сообщений: 13
02.07.2009, 18:42  [ТС]     переставить елементы массива #5
Цитата Сообщение от Vourhey Посмотреть сообщение
например, ты не думал "на фига мне две переменные цикла и два цикла, если элементу с индексом i есть зеркальный элемент с индексом n-i". Думай.
Да просто только вчера начали массивы изучать поэтому я пока по шаблонам думаю.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 18:45     переставить елементы массива #6
Duran, ок. Вот сейчас отойди от шаблонов. У тебя есть элемент a[i] его ту будешь менять с a[n-i]. Думай.
Duran
0 / 0 / 0
Регистрация: 21.06.2009
Сообщений: 13
02.07.2009, 18:58  [ТС]     переставить елементы массива #7
Цитата Сообщение от Vourhey Посмотреть сообщение
Duran, ок. Вот сейчас отойди от шаблонов. У тебя есть элемент a[i] его ту будешь менять с a[n-i]. Думай.
Спасибо огромное за подсказку.Правда я всетаки с вложенным массивом сделал

Добавлено через 6 минут 0 секунд
Цитата Сообщение от Vourhey Посмотреть сообщение
Подумай над алгоритмом, тут два цикла не нужны. и брэйки тоже
А не мог бы ты свой вариант показать?
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 19:19     переставить елементы массива #8
C
1
2
int a[N]={1,2,3,4,5},i=0,n=N-1;
for(i=0; i<N/2;a[i]^=a[n-i], a[n-i]^=a[i], a[i]^=a[n-i],i++);
Хех
но лучше так не делать
Duran
0 / 0 / 0
Регистрация: 21.06.2009
Сообщений: 13
02.07.2009, 19:28  [ТС]     переставить елементы массива #9
И ты думал что я сам доэтого додумаюсь?

а что означает символ ^= я такого не встречал еще.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.07.2009, 19:35     переставить елементы массива #10
ок. Тогда ты легко мог додуматься до:
C
1
2
3
4
5
6
7
    int a[N]={1,2,3,4,5}, i=0, buf=0;
    for(i=0; i<N/2; i++)
    {
        buf = a[i];
        a[i] = a[N-1-i];
        a[N-1-i] = buf;
    }
это оператор исключающего или.
Да ладно, фигня, это все с практикой придет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2009, 00:13     переставить елементы массива
Еще ссылки по теме:

C++ Переставить четвертый элемент массива на последнее место, сдвигая элементы массива
Переставить элемент массива на последнее место, сдвигая элементы массива C++
C++ Переставить соседние элементы массива
C++ Переставить соседние элементы массива
C++ Переставить соседние элементы массива

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
rangerx
1918 / 1527 / 139
Регистрация: 31.05.2009
Сообщений: 2,891
03.07.2009, 00:13     переставить елементы массива #11
Альтернативный вариант )
C++
1
2
3
4
#include <algorithm>
//...
 int *p1 = a, *p2 = a+n-1;
 while(p1 < p2) std::swap(*p1++, *p2--);
или
C++
1
2
3
#include <algorithm>
//...
std::reverse(a, a+n);
Yandex
Объявления
03.07.2009, 00:13     переставить елементы массива
Ответ Создать тему
Опции темы

Текущее время: 01:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru