Условие задачи
Задан массив целых чисел длины [latex]n[/latex]. Сдвинуть элементы массива вправо циклически на [latex]1[/latex] шаг.
Входные данные
В первой строке задано количество элементов массива [latex]n[/latex] [latex](n ≤ 100)[/latex]. Во второй строке заданы сами элементы массива, значение каждого из которых по модулю не превышает [latex]100[/latex].
Выходные данные
В одной строке вывести [latex]n[/latex] чисел — новые значения элементов массива.
Тесты
Входные данные | Выходные данные |
[latex]4 \\ 1 \: 2 \: 3 \: 4 [/latex] | [latex]4 \: 1 \: 2 \: 3[/latex] |
[latex]6 \\ 3 \: 3 \: 3 \: 3 \: 3 \: 1[/latex] | [latex]1 \: 3 \: 3 \: 3 \: 3 \: 3[/latex] |
[latex]6 \\ 3 \: 2 \: 1 \: 3 \: 1 \: 1[/latex] | [latex]1 \: 3 \: 2 \: 1 \: 3 \: 1[/latex] |
[latex]9 \\ 3 \: 2 \: 1 \: 3 \: 1 \: 5 \: 1 \: 5 \: 5[/latex] | [latex]5 \: 3 \: 2 \: 1 \: 3 \: 1 \: 5 \: 1 \: 5[/latex] |
[latex]2 \\ 1 \: 2 [/latex] | [latex]2 \: 1[/latex] |
[latex]6 \\ 1 \: 7 \: 3 \: 4 \: 5 \: 5[/latex] | [latex]5 \: 1 \: 7 \: 3 \: 4 \: 5[/latex] |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> using namespace std; int main() { int number; cin >> number; int *arr = new int[number]; for (int i = 0; i < number; i++) { cin >> arr[i]; } int last = arr[number - 1]; for (int i = number - 1; i >= 0; i--) { arr[i] = arr[i - 1]; } arr[0] = last; for (int i = 0; i < number; i++) { cout << arr[i] << ' '; } return 0; } |
Решение задачи
Создаем динамический массив, размером в
number элементов. Создаем переменную
last, в которой записан последний элемент массива. Создаём цикл, в котором меняется каждый элемент массива с предыдущим. Кладем на [latex]1[/latex] место (точнее [latex]0[/latex] место) бывший последний элемент массива.
Выводим массив.
Ссылки
Попробуйте разобраться, какой массив вы создали — статический или динамический?
Да, у Вас проходят тесты на e-olymp, но вы не решили саму задачу сдвига элементов массива. Необходимо переделать.
Евгения Викторовна, понял свою ошибку, исправил, спасибо большое.