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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ollien
0 / 0 / 0
Регистрация: 01.12.2013
Сообщений: 26
#1

Сдвиг элементов вектора на единицу вправо - C++

19.05.2014, 21:50. Просмотров 815. Ответов 8
Метки нет (Все метки)

Как можно сдвинуть элементы вектора на единицу вправо?
Знаю можно записать вот так, но это для массива. Мне бы что-то похожее на это, только для вектора.
C++
1
2
3
4
5
6
void right( int a[], int N)
{ 
int temp=a[0];
for (int i=N-1; i>0;i--) a[i]=a[i-1];
a[0]=temp;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2014, 21:50     Сдвиг элементов вектора на единицу вправо
Посмотрите здесь:

C++ Произвести циклический сдвиг вправо элементов массива
Циклический сдвиг прямоугольной матрицы на n элементов вправо C++
C++ Осуществить циклический сдвиг элементов в матрице на k элементов вправо или вниз
C++ Сдвиг элементов массива вправо на ону позицию
C++ Дано одномерный массив Х, размером 15 элементов. Провести циклический сдвиг элементов в массиве вправо на 2 позиции
C++ Сдвиг элементов вправо на один символ
C++ Сдвиг элементов массива циклически на a позиций вправо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
19.05.2014, 21:55     Сдвиг элементов вектора на единицу вправо #2
Цитата Сообщение от ollien Посмотреть сообщение
Как можно сдвинуть элементы вектора на единицу вправо?
а с самым правым что планируешь делать? По кругу пускать?
Специальной функции конечно же нет
ollien
0 / 0 / 0
Регистрация: 01.12.2013
Сообщений: 26
19.05.2014, 21:57  [ТС]     Сдвиг элементов вектора на единицу вправо #3
нет, там числа будут записываться в перевернутом виде, т.е. занята как раз левая часть, так что сдвигаться все будет хорошо)
newbie666
Заблокирован
19.05.2014, 22:05     Сдвиг элементов вектора на единицу вправо #4
Цитата Сообщение от ollien Посмотреть сообщение
там числа будут записываться в перевернутом виде, т.е. занята как раз левая часть, так что сдвигаться все будет хорошо)
ничё не понял... у тебя вектор интов, который как гусеницу надо прокрутить вправо как бы?
ollien
0 / 0 / 0
Регистрация: 01.12.2013
Сообщений: 26
19.05.2014, 22:07  [ТС]     Сдвиг элементов вектора на единицу вправо #5
да, вектор интов
допустим есть 0010000000000
надо чтобы получилось 0001000000000
ValeryS
Модератор
6513 / 4979 / 460
Регистрация: 14.02.2011
Сообщений: 16,488
19.05.2014, 22:12     Сдвиг элементов вектора на единицу вправо #6
с вектором можно работать как с обыкновенным массивом
Цитата Сообщение от ollien Посмотреть сообщение
int temp=a[0];
for (int i=N-1; i>0;i--) a[i]=a[i-1];
a[0]=temp;
ниче не попутал?
у тебя элемент a[0] возвращается на свое место
а должен записаться в a[N-1]

да и сдвиг у тебя влево
а ты хочешь
Цитата Сообщение от ollien Посмотреть сообщение
допустим есть 0010000000000
надо чтобы получилось 0001000000000
сдвиг вправо
ollien
0 / 0 / 0
Регистрация: 01.12.2013
Сообщений: 26
19.05.2014, 23:48  [ТС]     Сдвиг элементов вектора на единицу вправо #7
так?
C++
1
2
3
4
5
6
void right(vector <int> & res)
{
     int temp=res[0];
     for (int i=0; i<999;i++) res[i]=res[i+1];
     res[999]=temp;
}
Croessmah
Модератор
Эксперт CЭксперт С++
12886 / 7272 / 810
Регистрация: 27.09.2012
Сообщений: 17,971
Записей в блоге: 2
Завершенные тесты: 1
19.05.2014, 23:55     Сдвиг элементов вектора на единицу вправо #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
std::rotate ( vec.rbegin() , vec.rbegin()+1 , vec.rend() ) ;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2014, 01:19     Сдвиг элементов вектора на единицу вправо
Еще ссылки по теме:

Осуществить сдвиг влево/ вправо элементов C++
Осуществить сдвиг элементов массива вправо на k позиций C++
C++ Цикличиский сдвиг элементов массива вправо на k позиций
C++ Сдвиг элементов массива вправо
C++ Циклический сдвиг элементов массива вправо на К позиций

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

Или воспользуйтесь поиском по форуму:
ollien
0 / 0 / 0
Регистрация: 01.12.2013
Сообщений: 26
20.05.2014, 01:19  [ТС]     Сдвиг элементов вектора на единицу вправо #9
и все же у меня так и осталась ошибка в сдвиге элементов
помогите пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
/*void right(vector <int> & res)
{ 
     int temp=res[0];
     for (int i=0; i<999;i++) res[i]=res[i+1];
     res[999]=temp;
}*/
vector <int> mul(vector <int> & a, vector <int> & b) //умножение двух векторов (передаем два вектора по ссылке)
{
    vector <int> result (1000,0); //объявляем вектор в 1000 символов, состоящий из 0
    for (int i = 0; i < 1000; i++)
    {
        vector <int> res = a;  //объявляем вектор и присваиваем ему значение вектора "а"
        mul(res,b[i]);      //умножаем вектор "а" на разряд b
        std::rotate (res.rbegin() , res.rbegin()+1 , res.rend() ) ;
//      right(res);
        add(result, res);   //суммируем векторы
    }
    return result;
}
...
Добавлено через 1 час 9 минут
уже разобралась
Yandex
Объявления
20.05.2014, 01:19     Сдвиг элементов вектора на единицу вправо
Ответ Создать тему
Опции темы

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