|
|||
Лабораторная работа №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].
Блок-схема: Реализация в среде С++ #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;
Примеры вычислений Вывод: Программа успешно реализована в среде С++
|
|||
|