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

Осуществить циклический сдвиг элементов массива влево на одну позицию - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
Vernblum
0 / 0 / 0
Регистрация: 10.07.2013
Сообщений: 6
11.07.2013, 11:41     Осуществить циклический сдвиг элементов массива влево на одну позицию #1
Помогите, пожалуйста, решить программы на си++, если не решу мне хана, заранее спасибо:
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию(при этом АN перейдет в АN-1, АN-1 - в АN-2, А1 - в АN)(обработка одномерных массивов).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2013, 11:41     Осуществить циклический сдвиг элементов массива влево на одну позицию
Посмотрите здесь:

C++ Циклический сдвиг элементов массива по диагонали влево вниз
Осуществить сдвиг элементов массива влево на K позиций C++
C++ Циклический сдвиг массива влево
C++ Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.
Массивы: осуществить циклический сдвиг элементов массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valentina
66 / 66 / 3
Регистрация: 13.05.2012
Сообщений: 130
11.07.2013, 11:54     Осуществить циклический сдвиг элементов массива влево на одну позицию #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include<conio.h>
using namespace std;
const int n=11;
int main() 
{ 
    setlocale(LC_CTYPE,"rus");
    int temp;
    int arr[n]={0,1,2,3,4,5,6,5,7,8,9};
    temp = arr[0];
    for (int i = 0; i < n; i++)
        arr[i] = arr[i + 1];
    arr[n - 1] = temp;
    for(int i=0;i<n;i++)
    {
        cout<<arr[i]<<endl;
    }
 system("pause"); 
 return 0; 
 }
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.07.2013, 11:56     Осуществить циклический сдвиг элементов массива влево на одну позицию #3
Цитата Сообщение от Valentina Посмотреть сообщение
C++
1
2
    for (int i = 0; i < n; i++)
        arr[i] = arr[i + 1];
аккуратнее с границами массива:
C++
1
2
    for (int i = 0; i < n - 1; i++)
        arr[i] = arr[i + 1];
Valentina
66 / 66 / 3
Регистрация: 13.05.2012
Сообщений: 130
11.07.2013, 12:21     Осуществить циклический сдвиг элементов массива влево на одну позицию #4
почему, там все правильно. У нас же не
C++
1
for (int i = 0; i <= n; i++)
, а
C++
1
for (int i = 0; i < n; i++)
если следовать вашему коду, то мы теряем один элемент
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.07.2013, 12:23     Осуществить циклический сдвиг элементов массива влево на одну позицию #5
у вас там arr[i + 1] стоит, не забывайте
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
11.07.2013, 12:30     Осуществить циклический сдвиг элементов массива влево на одну позицию #6
Vernblum,
поиском то вообще не пользуемся?
недавно тема была
Функция сдвига массива
100500 алгоритмов предложили
лично я два
плюс _Faeton_
плюс Thinker

Добавлено через 1 минуту
Valentina,
тебе интересно будет посмотри
предложенное тобой решение оптимально при сдвиге на 1 а при большем сдвиге цикл в цикле
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2013, 12:40     Осуществить циклический сдвиг элементов массива влево на одну позицию
Еще ссылки по теме:

Одномерные массивы (циклический сдвиг всех элементов массива на одну позицию влево) C++
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – индекс максимального элемента C++
C++ Осуществить циклический сдвиг массива на N элементов

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.07.2013, 12:40     Осуществить циклический сдвиг элементов массива влево на одну позицию #7
std::rotate
Yandex
Объявления
11.07.2013, 12:40     Осуществить циклический сдвиг элементов массива влево на одну позицию
Ответ Создать тему
Опции темы

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