Cоединить 2 массива в один через цикл
Решил соединить 2 массива в один через цикл, но почему-то когда он заполняет 1 элемент 2 массива, то печатает 1 элемент 1 массива
int mas_1[2] = {2,2};
int mas_2[2] = {223,231};
int *mas_3 = new int[4];
for (int i = 0; i < 4; i++)
{
if (i < 2) { mas_3[i] = mas_1[i]; }
else { mas_3[i] = mas_2[4-i];}
}
for (int i = 0; i < 4; i++)
{
std::cout <<(mas_3[i])<< std::endl;
}
delete mas_2;
delete mas_1;
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Распишите:
for (int i = 0; i < 4; i++)
{
if (i < 2) { mas_3[i] = mas_1[i]; }
else { mas_3[i] = mas_2[4-i];}
}
при i = 0 и 1 выполняется mas_3[i] = mas_1[i];, как вы и хотите, но дальше - при i = 2 у вас выполняется mas_3[2] = mas_2[2];, а при i = 3 - mas_3[3] = mas_2[1];.
Так что у вас еще и выход за пределы массива...
Замените 4-i на i-2...