Технический форум

Технический форум (http://www.tehnari.ru/)
-   C/C++/С# (http://www.tehnari.ru/f42/)
-   -   Преобразовать массив (http://www.tehnari.ru/f42/t264051/)

Evgen121 01.05.2019 18:15

Преобразовать массив
 
Есть массив {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.
Преобразовать согласно последовательности b0, bn, b1, bn+1,… , bn-1, b2n-1.
Должно выводить 0 5 1 6 2 7 3 8 4 9

Программа выводит 0 5 1 6 1 7 6 8 1 9

Не могу понять что происходит с t:

Код:

#include "pch.h"
#include <iostream>

using namespace std;

int n = 5;
int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int t = a[0];

int main()
{
        for (int i = 0; i < n * 2; i++) {
                cout << a[i] << " ";
        }
        cout << endl;
        int c = n;
        for (int i = 0; i < n; i++) {
                a[i*2] = t;
                t = a[i + 1];
                a[i*2 + 1] = a[c];
                c++;
        }
        for (int i = 0; i < n*2; i++) {
                cout << a[i] << " ";
        }
}


Vladimir_S 02.05.2019 21:32

Полностью выдать программу не могу, бо паскалист, на Сях не пишу, но ошибку исправить помогу.
Дело в том, что при формировании нового массива Вы используете вместо исходных УЖЕ РАНЕЕ ПРЕОБРАЗОВАННЫЕ компоненты. Поэтому нужно ввести отдельный идентификатор для нового массива. Обозначим его, например, b. Тогда вместо
Код:

    for (int i = 0; i < n; i++) {
        a[i*2] = t;
        t = a[i + 1];
        a[i*2 + 1] = a[c];
        c++;
    }
    for (int i = 0; i < n*2; i++) {
        cout << a[i] << " ";
    }

следует написать:
Код:

    for (int i = 0; i < n; i++) {
        b[i*2] = t;
        t = a[i + 1];
        b[i*2 + 1] = a[c];
        c++;
    }
    for (int i = 0; i < n*2; i++) {
        cout << b[i] << " ";
    }

И всё будет тип-топ.


Часовой пояс GMT +4, время: 09:04.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.