Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 01.05.2019, 18:15   #1 (permalink)
Evgen121
Новичок
 
Регистрация: 01.05.2019
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Преобразовать массив

Есть массив {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] << " ";
	}
}
Evgen121 вне форума   Ответить с цитированием

Старый 01.05.2019, 18:15
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Так же на форуме есть темы которые совпадают с вашей по тематике

Ввести массив из n чисел, разбить массив на две примерно равные части и вывести числа
Как преобразовать BMP в doc?
Найти наибольший элемент, преобразовать массив
Преобразовать из 12v в 25v

Старый 02.05.2019, 21:32   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,872
Сказал(а) спасибо: 317
Поблагодарили 542 раз(а) в 183 сообщениях
Репутация: 101510
По умолчанию

Полностью выдать программу не могу, бо паскалист, на Сях не пишу, но ошибку исправить помогу.
Дело в том, что при формировании нового массива Вы используете вместо исходных УЖЕ РАНЕЕ ПРЕОБРАЗОВАННЫЕ компоненты. Поэтому нужно ввести отдельный идентификатор для нового массива. Обозначим его, например, 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] << " ";
     }
И всё будет тип-топ.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.