Хелпикс

Главная

Контакты

Случайная статья





Лабораторная работа №8. Задание 23



Лабораторная работа №8

Выполнила: Цыганкова Татьяна

Группа: ЭР-06-19

Вариант: 23 (N)

 

 

Общее задание:

Даны две последовательности. Изменить первую последовательность, вставляя после каждого элемента 1-ой последовательности очередной элемент 2-ой последовательности, например

1 2 3 4 -5

6 8 10 -20 33

Результат:

1 6 2 8 3 10 4 -20 -5 33

#include < vector>

#include < iostream>

using namespace std;

void main() {

setlocale(LC_ALL, " RUS" );

int razmer;

int n, m;

cout < < " введите размеры 1 последовательности " < < endl;

cin > > n;

cout < < " введите размеры 2 последовательности" < < endl;

cin > > m;

vector < int> vec1(n);

cout < < " введите первую последовательность" < < endl;

for (int j = 0; j < n; j++) {

cin > > vec1[j];

}

cout < < " введите вторую последовательность" < < endl;

vector < int> vec2(m);

for (int j = 0; j < m; j++) {

cin > > vec2[j];

}

if (vec1. size() > = vec2. size()) {

razmer = vec2. size();

}

else {

razmer = vec1. size();

}

int a = 1;

for (int i = 0; i < razmer; i++) {

vec1. insert(vec1. begin() + a, vec2[i]);

a += 2;

}

for (int i = 0; i < vec1. size(); i++) {

cout < < vec1[i];

}

}

 

Блок-схема:

Задание 23

Циклическим сдвигом элементов массива называется такое преобразование, в котором индексы элементов массива меняются на некоторое число. Например, массив [1, 2, 3, 4] может быть циклически сдвинут влево на 1 для получения массива [2, 3, 4, 1].
Сформировать новый массив, полученный циклическим сдвигом исходного массива на N. Если N отрицательное, произвести циклический сдвиг влево, иначе вправо.

 

Блок-схема:

Реализация в среде С++

#include < iostream>

#include < string>

#include < vector>

 

using namespace std;

 

vector< int> change(const vector< int> & vec, int N)       //vec - передаваемый вектор, N - число сдвига

{

vector< int> new_vec = vec;

N = new_vec. size() - N;    // для того, чтобы при положительном N сдвигалось вправо, а при отрицательном влево

reverse(new_vec. begin(), new_vec. begin() + N);

reverse(new_vec. begin() + N, new_vec. end());

reverse(new_vec. begin(), new_vec. end());

return new_vec;

}

 

int main() {

setlocale(LC_ALL, " rus" );

int N, n;

vector< int> vec1, vec2;

cout < < " Введите количество элементов вектора\n";

cin > > n;

if (n > 0) {

vec1. resize(n);

cout < < " Поэлементно введите вектор\n";

for (int i = 0; i < n; i++) {

cin > > vec1[i];

}

cout < < " Введите число перестановок N\n";

cin > > N;

vec2 = change(vec1, N);

cout < < " Получившийся вектор " < < endl;

for (int i = 0; i < n; i++) {

cout < < vec2[i] < < endl;

}

return 0;

}

else {

cout < < " Количество элементов не может быть меньше либо ранвным нулю\n";

return 1;

 

Примеры вычислений

Вывод:

Программа успешно реализована в среде С++



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.