Ю4.18

Задача: В массиве [latex]Z(2n)[/latex] каждый элемент с чётным индексом поменять местами с предыдущим, то есть получить последовательность чисел [latex]z_{2}[/latex], [latex]z_{1}[/latex], [latex]z_{4}[/latex], [latex]z_{3}[/latex], \ldots ,[latex]z_{2n}[/latex], [latex]z_{2n-1}[/latex].

Тесты: 

[latex]n[/latex] Входной массив Обработанный массив
5 1 2 3 4 5 6 7 8 9 10 2 1 4 3 6 5 8 7 10 9
7 2 4 6 8 10 12 14 16 18 20 22 24 26 28 4 2 8 6 12 10 16 14 20 18 24 22 28 26

Код на С++: 

Код на Java:

 

 

Решение:  Для того, чтобы поменять местами чётный и нечётный по порядковому номеру элементы массива, надо определить чётность порядкового номера. Для этого надо проверить остаток от деления на 2, т.е если [latex]imod2=0[/latex], то меняем предыдущий элемент с текущим.

Для проверки правильности работы программы, воспользуйтесь ссылкой.

Марченко Філіп Олександрович
Марченко Філіп Олександрович

Latest posts by Марченко Філіп Олександрович (see all)

7 thoughts on “Ю4.18

  1. Вроде, в условии написано, что размер массива 2n, а Вы n выделяете.
    Вот это:
    for (int i=1; i<=n; i++) {
    if (i%2==0)
    вполне можно заменить на вот это:
    for (int i=2 i<=n; i+=2) {
    Зачем проходиться по заведомо ненужным элементам?

      • Забавно. Теперь размер массива в 2 раза больше, но чиаем мы по-прежнему n элементов.
        Я бы после считывания n, просто умножал его на 2.
        И не забывайте — если Вы хотите нумеровать элементы с 1, а не с 0, Вам придется выделять массив с запасом +1.

  2. Принято.
    Замечание методического свойства. В С++ массивы начинаются с нуля. Если Вам нужно с 1, то можно просто не использовать нулевой элемент, как Вы и сделали. Это правильно. Но что делать если понадобится массив из 10 элементов, начиная с миллиарда? При таком подходе впустую будет израсходована масса памяти. Может есть смысл делать пересчёт индексов?

  3. Хорошо, что сделали нумерацию с нуля — т.е. используете все элементы массива, не пропуская нулевой. Но зачем тогда размер массива, равный n+1? Теперь лишний элемент в массиве не нужен.

    А зачем условие A[i] % 2 == 0? Где в условии задачи сказано про четность элементов?

Добавить комментарий