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

Сдвинуть элементы на одну позицию вправо\влево - C++

Восстановить пароль Регистрация
 
Aleksandr_sf
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
09.07.2015, 13:39     Сдвинуть элементы на одну позицию вправо\влево #1
Ребята помогите пожалуйста с решением задачи на с++ : Сдвинуть элементы на одну позицию вправо\влево.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2015, 13:39     Сдвинуть элементы на одну позицию вправо\влево
Посмотрите здесь:

Дано слово. Переставить его последнюю букву на место k-й. При этом k-ю, k+1-ю, …, предпоследнюю буквы сдвинуть вправо на одну позицию. C++
C++ Сдвинуть элементы массива на k элементов вправо
Указатели: сдвинуть элементы циклически на 1 позицию влево C++
C++ Осуществить циклический сдвиг элементов массива влево на одну позицию
Одномерные массивы (циклический сдвиг всех элементов массива на одну позицию влево) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
 Аватар для volvo
21814 / 14177 / 3948
Регистрация: 22.10.2011
Сообщений: 25,053
Записей в блоге: 2
09.07.2015, 13:41     Сдвинуть элементы на одну позицию вправо\влево #2
Элементы чего? Массива?
григорий15567
Заблокирован
09.07.2015, 13:47     Сдвинуть элементы на одну позицию вправо\влево #3
Добрый день. Предположим что у вас массив и сдвигать нужно элементы массива. Причем массив одномерный, статистический. Тогда проходим по каждому элементу массива в цикле.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
   
  int p[5] = {1, 2, 3, 4, 5};  
  int i; 
  int t; 
  // cдвигаем влево (для право просто вычитаем еденицу, а цикл от 1 до 5)
   for(int i=0;i<4;i++) 
  {
  t=p[i];
  p[i]=p[i+1];
  p[i+1]=t;          
  }
  // выводим значения массива
   for(int i=0;i<5;i++)
   printf("%d", p[i]);
   // ждем нажатия клавиши
    system("PAUSE");
    return EXIT_SUCCESS;
}

Если помог жмем спасибо, если что то не понятно - пишите с радостью объясню. Компилятор по умолчанию dev c++ консольный режим.


mssove@mail.ru mssove - скайп
Курсовые и дипломы, а так же блок схемы и задачи. Дешевизна и качество совместимы, так как помогаю за спасибо ))
mr_mczakenberg
65 / 65 / 31
Регистрация: 10.04.2015
Сообщений: 281
09.07.2015, 13:56     Сдвинуть элементы на одну позицию вправо\влево #4
Зачем iostream если нет ниодного cout / cin ?
Зачем объявлять int i; если в цикле вы все равно объявляете int i = 0?

Последний элемент не выводится. Если вам нужно выводить, последний элемент, который не заменяли - создайте отдельный цикл на вывод элементов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
int main()
{
    const int N = 5;
    int mas [N] = {1,2,3,4,5};
    
    for(int i = 0; i <N-1;i++)
    {
        int t = mas[i];
        mas[i] = mas[i+1];
        mas[i+1] = t;
        std::cout<<mas[i]<< " ";
    }
    return 0;
    
}
григорий15567
Заблокирован
09.07.2015, 14:50     Сдвинуть элементы на одну позицию вправо\влево #5
Пожалуйста не говорите бред. Последний элемент выводиться ! Специально проверял. И еще одно
Зачем iostream - стоит по умолчанию в компиляторе.
Зачем объявлять int i; - для совместимости с разными компиляторами, в частности например в языке С в цикле объявить не получиться.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
09.07.2015, 16:21     Сдвинуть элементы на одну позицию вправо\влево #6
при сдвиге, что должно оказаться в крайней позиции, со стороны которой происходит сдвиг??
григорий15567
Заблокирован
09.07.2015, 19:07     Сдвинуть элементы на одну позицию вправо\влево #7
Элемент с другого конца массива. Это же элементарно. При этом нельзя просто заменить крайние элементы массива, так как это будет ошибка, нужно сдвинуть все элементы.
Aleksandr_sf
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
09.07.2015, 19:11  [ТС]     Сдвинуть элементы на одну позицию вправо\влево #8
григорий15567 ? спасибо большое все работает
mr_mczakenberg
65 / 65 / 31
Регистрация: 10.04.2015
Сообщений: 281
09.07.2015, 20:19     Сдвинуть элементы на одну позицию вправо\влево #9
Цитата Сообщение от григорий15567 Посмотреть сообщение
Пожалуйста не говорите бред. Последний элемент выводиться !
Про элемент - это я уже описывал свой код... не зря там пропуск в строчку стоит.
Петров
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 17
09.07.2015, 21:29     Сдвинуть элементы на одну позицию вправо\влево #10
Здравствуйте! Недавно видел подобную задачу, только сдвигать нужно было на k элементов(если k положительное - сдвигать вправо, если отрицательное - сдвигать влево). Для этого создавался дополнительный массив b[i] и в цикле пишем:
C++
1
2
for (int i=0; i<n; i++)
b[i]=a[(i-k+n)%n];
Соответственно для вашего случая тоже будет работать.
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
09.07.2015, 21:43     Сдвинуть элементы на одну позицию вправо\влево #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
using namespace std;
 
void left_shift (int *array, int size)
{
    int tmp = array[0];
    for (int i = 0; i < size - 1; i++)
        array[i] = array[i + 1];
    array[size - 1] = tmp;
}
 
void right_shift (int *array, int size)
{
    int tmp = array[size - 1];
    for (int i = size - 1; i > 0; i--)
        array[i] = array[i - 1];
    array[0] = tmp;
}
 
void show_array (int *array, int size)
{
    for (int i = 0; i < size; i++)
        cout << array[i] << ' ';
    cout << endl;
}
 
int main (int argc, char *argv[])
{
    int const N = 4;
    int a[N] = {1, 2, 3, 4};
    left_shift (a, N);
    show_array (a, N);
    right_shift (a, N);
    show_array (a, N);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2015, 18:11     Сдвинуть элементы на одну позицию вправо\влево
Еще ссылки по теме:

элементы вещественного массива сдвинуть на k позиций влево C++
C++ Сдвинуть буквы, в каждом слове, влево или вправо, на n символов
C++ Сформировать массив десятичных цифр числа А. Элементы массива цифр сдвинуть циклически влево на 1 позицию

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

Или воспользуйтесь поиском по форуму:
Aleksandr_sf
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
10.07.2015, 18:11  [ТС]     Сдвинуть элементы на одну позицию вправо\влево #12
MicM , в право сдвигает влево нет
Yandex
Объявления
10.07.2015, 18:11     Сдвинуть элементы на одну позицию вправо\влево
Ответ Создать тему
Опции темы

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