Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/103: Рейтинг темы: голосов - 103, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6

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

09.07.2015, 13:39. Показов 21337. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята помогите пожалуйста с решением задачи на с++ : Сдвинуть элементы на одну позицию вправо\влево.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2015, 13:39
Ответы с готовыми решениями:

Массив: Циклически сдвинуть элементы массива на одну позицию вправо...
Требуется циклически сдвинуть элементы массива на одну позицию вправо. Я не понимаю, как делать. Есть какой-то код. Но конечный массив не...

Указатели: сдвинуть элементы циклически на 1 позицию влево
Условие задачи: Заполните случайным образом одномерный массив из n элементов и здвиньте элементы циклически на 1 позицию влево. (Например...

Дано слово. Переставить его последнюю букву на место k-й. При этом k-ю, k+1-ю, …, предпоследнюю буквы сдвинуть вправо на одну позицию.
Помогите пожалуйста с задачей: Дано слово. Переставить его последнюю букву на место k-й. При этом k-ю, k+1-ю, …, предпоследнюю буквы...

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
09.07.2015, 13:41
Элементы чего? Массива?
0
Заблокирован
09.07.2015, 13:47
Добрый день. Предположим что у вас массив и сдвигать нужно элементы массива. Причем массив одномерный, статистический. Тогда проходим по каждому элементу массива в цикле.
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 - скайп
Курсовые и дипломы, а так же блок схемы и задачи. Дешевизна и качество совместимы, так как помогаю за спасибо ))
0
67 / 67 / 72
Регистрация: 10.04.2015
Сообщений: 281
09.07.2015, 13:56
Зачем 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;
    
}
0
Заблокирован
09.07.2015, 14:50
Пожалуйста не говорите бред. Последний элемент выводиться ! Специально проверял. И еще одно
Зачем iostream - стоит по умолчанию в компиляторе.
Зачем объявлять int i; - для совместимости с разными компиляторами, в частности например в языке С в цикле объявить не получиться.
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
09.07.2015, 16:21
при сдвиге, что должно оказаться в крайней позиции, со стороны которой происходит сдвиг??
0
Заблокирован
09.07.2015, 19:07
Элемент с другого конца массива. Это же элементарно. При этом нельзя просто заменить крайние элементы массива, так как это будет ошибка, нужно сдвинуть все элементы.
0
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
09.07.2015, 19:11  [ТС]
григорий15567 ? спасибо большое все работает
0
67 / 67 / 72
Регистрация: 10.04.2015
Сообщений: 281
09.07.2015, 20:19
Цитата Сообщение от григорий15567 Посмотреть сообщение
Пожалуйста не говорите бред. Последний элемент выводиться !
Про элемент - это я уже описывал свой код... не зря там пропуск в строчку стоит.
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 17
09.07.2015, 21:29
Здравствуйте! Недавно видел подобную задачу, только сдвигать нужно было на k элементов(если k положительное - сдвигать вправо, если отрицательное - сдвигать влево). Для этого создавался дополнительный массив b[i] и в цикле пишем:
C++
1
2
for (int i=0; i<n; i++)
b[i]=a[(i-k+n)%n];
Соответственно для вашего случая тоже будет работать.
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
09.07.2015, 21:43
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;
}
0
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
10.07.2015, 18:11  [ТС]
MicM , в право сдвигает влево нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.07.2015, 18:11
Помогаю со студенческими работами здесь

Сформировать массив десятичных цифр числа А. Элементы массива цифр сдвинуть циклически влево на 1 позицию
дано целое десятичное число А. Сформировать массив десятичных цифр числа А. Элементы массива цифр сдвинуть циклически влево на 1 позицию ....

Нужно сдвинуть число на 4 разряда влево и вправо
Нужно сдвинуть 1000 на 4 разряда влево и вправо. Тема указатели. Препод говорил, что число нужно переводить в двоичную систему, что-то с...

Сдвинуть буквы, в каждом слове, влево или вправо, на n символов
Задача: Взять из файла текст (слова, разделённые знаками препинания и пробелами) и сдвинуть буквы, в каждом слове, влево или вправо, на n...

В двухмерном массиве сдвинуть ячейки влево вправо / вверх вниз
Добрый день. Вот текст задачи: Создайте двухмерный массив. Заполните его случайными числами и покажите на экран. Пользователь выбирает...

Циклический сдвиг элементов массива влево на одну позицию
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию (при этом AN перейдет в AN-1, AN-1 - в AN-2, .,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru