0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
1

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

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

Ребята помогите пожалуйста с решением задачи на с++ : Сдвинуть элементы на одну позицию вправо\влево.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2015, 13:39
Ответы с готовыми решениями:

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

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

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

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

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31246 / 20425 / 7961
Регистрация: 22.10.2011
Сообщений: 35,465
Записей в блоге: 6
09.07.2015, 13:41 2
Элементы чего? Массива?
0
Заблокирован
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
67 / 67 / 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
Заблокирован
09.07.2015, 14:50 5
Пожалуйста не говорите бред. Последний элемент выводиться ! Специально проверял. И еще одно
Зачем iostream - стоит по умолчанию в компиляторе.
Зачем объявлять int i; - для совместимости с разными компиляторами, в частности например в языке С в цикле объявить не получиться.
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
09.07.2015, 16:21 6
при сдвиге, что должно оказаться в крайней позиции, со стороны которой происходит сдвиг??
0
Заблокирован
09.07.2015, 19:07 7
Элемент с другого конца массива. Это же элементарно. При этом нельзя просто заменить крайние элементы массива, так как это будет ошибка, нужно сдвинуть все элементы.
0
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
09.07.2015, 19:11  [ТС] 8
григорий15567 ? спасибо большое все работает
0
67 / 67 / 72
Регистрация: 10.04.2015
Сообщений: 281
09.07.2015, 20:19 9
Цитата Сообщение от григорий15567 Посмотреть сообщение
Пожалуйста не говорите бред. Последний элемент выводиться !
Про элемент - это я уже описывал свой код... не зря там пропуск в строчку стоит.
0
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];
Соответственно для вашего случая тоже будет работать.
0
839 / 497 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
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
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 6
10.07.2015, 18:11  [ТС] 12
MicM , в право сдвигает влево нет
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2015, 18:11

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

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

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

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


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

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

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