Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Aleksandr_sf
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
#1

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

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

Ребята помогите пожалуйста с решением задачи на с++ : Сдвинуть элементы на одну позицию вправо\влево.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2015, 13:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сдвинуть элементы на одну позицию вправо\влево (C++):

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

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

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

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

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

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

11
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25595 / 17148 / 6819
Регистрация: 22.10.2011
Сообщений: 30,344
Записей в блоге: 6
09.07.2015, 13:41 #2
Элементы чего? Массива?
0
григорий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 - скайп
Курсовые и дипломы, а так же блок схемы и задачи. Дешевизна и качество совместимы, так как помогаю за спасибо ))
0
mr_mczakenberg
65 / 65 / 72
Регистрация: 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;
    
}
0
григорий15567
Заблокирован
09.07.2015, 14:50 #5
Пожалуйста не говорите бред. Последний элемент выводиться ! Специально проверял. И еще одно
Зачем iostream - стоит по умолчанию в компиляторе.
Зачем объявлять int i; - для совместимости с разными компиляторами, в частности например в языке С в цикле объявить не получиться.
0
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
09.07.2015, 16:21 #6
при сдвиге, что должно оказаться в крайней позиции, со стороны которой происходит сдвиг??
0
григорий15567
Заблокирован
09.07.2015, 19:07 #7
Элемент с другого конца массива. Это же элементарно. При этом нельзя просто заменить крайние элементы массива, так как это будет ошибка, нужно сдвинуть все элементы.
0
Aleksandr_sf
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
09.07.2015, 19:11  [ТС] #8
григорий15567 ? спасибо большое все работает
0
mr_mczakenberg
65 / 65 / 72
Регистрация: 10.04.2015
Сообщений: 281
09.07.2015, 20:19 #9
Цитата Сообщение от григорий15567 Посмотреть сообщение
Пожалуйста не говорите бред. Последний элемент выводиться !
Про элемент - это я уже описывал свой код... не зря там пропуск в строчку стоит.
0
Петров
0 / 0 / 2
Регистрация: 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];
Соответственно для вашего случая тоже будет работать.
0
MicM
824 / 483 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 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;
}
0
Aleksandr_sf
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
10.07.2015, 18:11  [ТС] #12
MicM , в право сдвигает влево нет
0
10.07.2015, 18:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2015, 18:11
Привет! Вот еще темы с решениями:

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

Осуществить циклический сдвиг элементов массива влево на одну позицию
Помогите, пожалуйста, решить программы на си++, если не решу мне хана, заранее...

Осуществить циклический сдвиг элементов массива вправо на одну позицию
4Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо...

Одномерные массивы (циклический сдвиг всех элементов массива на одну позицию влево)
Написать программу, которая делает циклический сдвиг всех элементов массива а1,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru