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

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

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

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

19.05.2014, 21:50. Просмотров 953. Ответов 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;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2014, 21:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сдвиг элементов вектора на единицу вправо (C++):

Сдвиг элементов массива вправо - C++
Добрый вечер всем. У меня возник такой вопрос. Можно ли сдвинуть элементы массива вправо на одну позицию, при это цикл начинать не с...

Осуществить циклический сдвиг элементов в матрице на k элементов вправо или вниз - C++
Осуществить циклический сдвиг элементов в мат-це на k элементов вправо или вниз (в зависимости от введенного режима). Число k может быть...

Дано одномерный массив Х, размером 15 элементов. Провести циклический сдвиг элементов в массиве вправо на 2 позиции - C++
Дано одномерный массив Х, размером 15 элементов. Провести циклический сдвиг элементов в массиве вправо на 2 позиции.

Осуществить сдвиг влево/ вправо элементов - C++
Разработать подпрограммы (функции или процедуры) для следующих алгоритмов над массивом. Входным параметром подпрограмм является...

Сдвиг элементов вправо на один символ - C++
Дано некоторое слово. Написать функцию, которая возвращает слово, полученное из исходного в результате сдвига его элементов вправо на один...

Осуществить сдвиг элементов массива вправо на k позиций - C++
Всем привет , помогите пожалуйста решить эту задачу на языке Си 9. Дан целочисленный массив размера N. Осуществить сдвиг вправо на k...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
newbie666
Заблокирован
19.05.2014, 21:55 #2
Цитата Сообщение от ollien Посмотреть сообщение
Как можно сдвинуть элементы вектора на единицу вправо?
а с самым правым что планируешь делать? По кругу пускать?
Специальной функции конечно же нет
0
ollien
0 / 0 / 0
Регистрация: 01.12.2013
Сообщений: 26
19.05.2014, 21:57  [ТС] #3
нет, там числа будут записываться в перевернутом виде, т.е. занята как раз левая часть, так что сдвигаться все будет хорошо)
0
newbie666
Заблокирован
19.05.2014, 22:05 #4
Цитата Сообщение от ollien Посмотреть сообщение
там числа будут записываться в перевернутом виде, т.е. занята как раз левая часть, так что сдвигаться все будет хорошо)
ничё не понял... у тебя вектор интов, который как гусеницу надо прокрутить вправо как бы?
0
ollien
0 / 0 / 0
Регистрация: 01.12.2013
Сообщений: 26
19.05.2014, 22:07  [ТС] #5
да, вектор интов
допустим есть 0010000000000
надо чтобы получилось 0001000000000
0
ValeryS
Модератор
6631 / 5039 / 466
Регистрация: 14.02.2011
Сообщений: 16,845
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
сдвиг вправо
0
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;
}
0
Croessmah
Эксперт CЭксперт С++
13205 / 7476 / 839
Регистрация: 27.09.2012
Сообщений: 18,381
Записей в блоге: 3
Завершенные тесты: 1
19.05.2014, 23:55 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
std::rotate ( vec.rbegin() , vec.rbegin()+1 , vec.rend() ) ;
1
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 минут
уже разобралась
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2014, 01:19
Привет! Вот еще темы с ответами:

Цикличиский сдвиг элементов массива вправо на k позиций - C++
Дан массив размера N ≥ 2 и число k (0 &lt; k &lt; N). Осуществить циклический сдвиг элементов массива вправо на k позиций. Input Первая...

Сдвиг элементов массива вправо на ону позицию - C++
Реализовать программу , осуществляющую сдвиг элементов массива вправо на ону позицию. Не могу составить алгоритм для программы.

Циклический сдвиг элементов массива вправо на К позиций - C++
Дан массив размера N и число К (0&lt;k&lt;5, K&lt;n) Осуществить циклический сдвиг элементов массива вправо на К позиций .

Произвести циклический сдвиг вправо элементов массива - C++
Люди в Си++ дуб дубом. Помагите очень надо. Вот текст задачи. Ввести одномерный целочисленный массив A, вывести его. Произвести...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.05.2014, 01:19
Ответ Создать тему
Опции темы

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