Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/75: Рейтинг темы: голосов - 75, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 15
1

Сдвинуть массив на 1 элемент влево

17.01.2017, 18:48. Показов 14944. Ответов 11

Author24 — интернет-сервис помощи студентам
Значение нулевого элемента можно оставить, как есть.

Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2017, 18:48
Ответы с готовыми решениями:

Циклически сдвинуть массив на 1 элемент влево
Вводится массив. Циклически сдвинуть его на 1 элемент влево, т.е. каждый элемент сдвинуть на одну...

Циклически сдвинуть массив влево
Здравствуйте) Можете помочь решить:help: Даны действительные числа а1, ... , а70....

Одномерный массив. Сдвинуть элементы циклически на n позиций влево
Ввести одномерный статический массив из k чисел. Сдвинуть элементы массива циклически на n позиций...

Двумерный динамический массив. Все нечетные строки матрицы сдвинуть циклически на К элементов влево
Помогите пожалуйста нужно нужно создать двумерный динамический массив и все нечетные строки матрицы...

11
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.01.2017, 19:09 2
А чему должно быть равно после сдвига значение последнего элемента?
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
17.01.2017, 19:14 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <random>
#include <ctime>
#include <functional>
using namespace std;
int main() {
    int n;
    cin>>n;
    vector<int>v(n);
    mt19937 gen(time(nullptr));
    uniform_int_distribution<>dist(0,20);
    generate(v.begin(),v.end(),bind(dist,gen));
    copy(v.cbegin(),v.cend(),ostream_iterator<int>(cout," "));
    cout<<endl;
    rotate(v.begin(),v.begin()+1,v.end());
    copy(v.cbegin(),v.cend(),ostream_iterator<int>(cout," "));
}
1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.01.2017, 19:20 4
Цитата Сообщение от Peoples Посмотреть сообщение
C++
1
2
rotate(v.begin(),v.begin()+1,v.end());
    copy
Есть rotate_copy.
1
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 15
18.01.2017, 18:30  [ТС] 5
MrGluck, значению предпоследнеге элемента.
0
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
18.01.2017, 18:37 6
Лучший ответ Сообщение было отмечено Павлина как решение

Решение

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
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std; 
int main()
{
    srand ((unsigned)time(NULL));
    const int n=5;
    int a[n];
    int i, j, tmp;
    cout << "massive before:" << endl;
    for (i=0; i<n; i++)
    {
        a[i] = rand()%31-10;
        cout << a[i] << ' ';
    }
    tmp = a[0];
    cout << "\nmassive after:" << endl;
    for (int i=0; i<n-1; i++)
    {
        a[i] = a[i+1];
        if (i == n-2)
            a[n-1] = tmp;
    }
    for (i=0; i<n; i++)
    {
        cout << a[i] << ' ';
    }
    system("pause");
    return 0;
}
не подойдет?
1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
18.01.2017, 18:39 7
Цитата Сообщение от Павлина Посмотреть сообщение
значению предпоследнеге элемента.
Это больше похоже на сдвиг вправо.

Добавлено через 1 минуту
Цитата Сообщение от Павлина Посмотреть сообщение
значению предпоследнеге элемента.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    const int size = sizeof(arr) / sizeof (*arr);
    arr[size - 1] = arr[size - 2];
    for (int i = 0; i < size - 1; i++)
    {
        arr[i] = arr[i + 1];
        std::cout << arr[i] << " ";
    }
    std::cout << arr[size - 1] << std::endl;
}
1
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,057
18.01.2017, 21:44 8
Цитата Сообщение от Павлина Посмотреть сообщение
...
Где у массива "лево" и где у массива "право"?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
18.01.2017, 21:46 9
Я тоже думаю, что тут "Cено-солома".
0
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 15
19.01.2017, 16:53  [ТС] 10
Если не ошибаюсь, принцип при сдвиге влево и вправо один и тот же, индексы разные. Соответствтенно, из сдвига вправо легко сделать сдвиг влево и наоборот.

Сдвиг влево -- освобождается последний элемент. Сдвиг вправо--первый.
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.01.2017, 16:59 11
Цитата Сообщение от Павлина Посмотреть сообщение
Если не ошибаюсь, принцип при сдвиге влево и вправо один и тот же, индексы разные.
Есть разница куда двигать.
Цитата Сообщение от Павлина Посмотреть сообщение
из сдвига вправо легко сделать сдвиг влево и наоборот.
Да, при кольцевом сдвиге. У вас же по заданию крайние элементы не переходят в другой "конец".
Но меня смутило не это. В задании говорится про сдвиг влево, а потом в пояснении говорится про первый элемент. Хотя по идее, в него должен записаться второй. А вот что делать с последним не уточняется. Его можно оставить как есть или записать туда бывшее значение первого элемента.
Вот если бы сдвиг был вправо, то пояснения имели бы смысл. Решился бы вопрос что делать с первым элементом и ваше уточнение про то, что в последний элемент записать значение предпоследнего, соответствовало бы истине.
1
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 15
24.01.2017, 17:22  [ТС] 12
FreeYourMind, Вполне. Спасибо .
0
24.01.2017, 17:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2017, 17:22
Помогаю со студенческими работами здесь

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

Сформировать одномерный массив, удалить первый элемент с заданным значением, сдвинуть массив циклически
1)сформировать одномерный массив целых чисел 2)удалить первый элемент с заданным значением ...

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru