Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
toxenok
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 56
1

Как из двух массивов сформировать один?

05.02.2015, 20:54. Просмотров 619. Ответов 9
Метки нет (Все метки)

Даны два массива A[5] и B[5]. Сформировать массив Т[10], таким образом, чтобы элементы располагались в нем A[0]B[0]A[1]B[1]...A[4]B[4]
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2015, 20:54
Ответы с готовыми решениями:

Функция: сформировать массив Z на базе двух массивов X, Y как произведение соответствующих элементов
программа на Си Написать функцию, которая формирует массив Z на базе двух массивов X, Y по...

Перенос значений из двух массивов в один
Доброго времени суток! Я создал рабочий участок кода, который спрашивает сколько элементов будет в...

Сформировать массив, элементы которого равны произведению соответствующих элементов двух других массивов
Дано два массива одного размера. Сформулировать третий массив, элементы которого равны произведению...

Слияние двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию
Даны два упорядоченных по убыванию массива W и G. Получите из них путем слияния упорядоченный по...

Из двух массивов сформировать один и вычислить некоторые значения
Из двух массивов разной длины сформировать общий массив и вычислить сумму элементов, являющихся...

9
obivan
Падаван С++
435 / 251 / 86
Регистрация: 11.11.2014
Сообщений: 891
Завершенные тесты: 2
05.02.2015, 21:43 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <conio.h>
 
#define N 5
 
int main()
{
    int A[N] = { 1, 2, 3, 4, 5 };
    int B[N] = { 1, 2, 3, 4, 5 };
    int T[N + N];
 
    for (int i = 0, j = 0; j < N+N; i++)
    {
        if (j != 0)
            j++;
        T[j] = A[i];
        j++;
        T[j] = B[i];
    }
 
    for (int i = 0; i < N + N; i++)
        printf("%2d", T[i]);
 
    _getch();
    return 0;
}
0
toxenok
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 56
05.02.2015, 22:00  [ТС] 3
Не работает..
0
obivan
Падаван С++
435 / 251 / 86
Регистрация: 11.11.2014
Сообщений: 891
Завершенные тесты: 2
05.02.2015, 22:07 4
toxenok, что именно, какя ошибка

Добавлено через 30 секунд
Компилровал в VS13 все норм

Добавлено через 2 минуты
1 1 2 2 3 3 4 4 5 5
Вот что у меня вывело в консоль вроде все правильно
0
korvin_
2364 / 1831 / 338
Регистрация: 28.04.2012
Сообщений: 6,361
05.02.2015, 23:11 5
obivan,
C
1
2
if (j != 0)
            j++;
— это лишнее.
C
1
2
3
4
for (int i = 0; i < N+N; i += 2) {
    T[i]   = A[i];
    T[i+1] = B[i];
}
2
obivan
Падаван С++
435 / 251 / 86
Регистрация: 11.11.2014
Сообщений: 891
Завершенные тесты: 2
06.02.2015, 03:52 6
korvin_,
Согласен, ваш вариант намного лучше. Просто что успел придумать, то и написал
0
Catstail
Модератор
24258 / 12228 / 2204
Регистрация: 12.02.2012
Сообщений: 19,851
06.02.2015, 15:18 7
А вот еще вариант:

C
1
2
3
4
5
6
7
void zip(int *A, int *B, int *T, int n)
{
     if (n==0) return;
     T[0]=A[0]; 
     T[1]=B[0]; 
     zip(++A,++B,T+2,n-1);
}
0
easybudda
Модератор
Эксперт CЭксперт С++
10240 / 6132 / 1542
Регистрация: 25.07.2009
Сообщений: 11,671
06.02.2015, 20:24 8
Чуть по-другому
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
#define SIZE 5
 
void zip(const int * a, const int * b, int * c, const size_t size) {
    if ( size ) {
        *c++ = *a++;
        *c++ = *b++;
        zip(a, b, c, size - 1);
    }
}
 
int main(void) {
    int a[SIZE] = { 11, 12, 13, 14, 15 }, b[SIZE] = { 21, 22, 23, 24, 25 }, c[SIZE * 2], i;
    
    zip(a, b, c, SIZE);
    for ( i = 0; i < SIZE * 2; ++i )
        printf("%d ", c[i]);
    printf("\n");
    
    return 0;
}
1
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
07.02.2015, 02:48 9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>      // printf
 
#define SIZE 5
 
int main(void)
{
    int a[SIZE] = { 11, 12, 13, 14, 15 };
    int b[SIZE] = { 21, 22, 23, 24, 25 };
    int* ab[2] = { a, b };
    int c[SIZE * 2];
    int i;
    for( i = 0; i < SIZE * 2; ++i ) {
        c[i] = ab[i % 2][i / 2];
    }
    for( i = 0; i < SIZE * 2; ++i ) {
        printf("%d ", c[i]);
    }
    putchar('\n');
    return 0;
}
1
easybudda
Модератор
Эксперт CЭксперт С++
10240 / 6132 / 1542
Регистрация: 25.07.2009
Сообщений: 11,671
07.02.2015, 04:16 10
C
1
2
3
4
/*...*/
    for( i = 0; i < SIZE * 2; ++i )
        c[i] = ( i / 2 )[ i & 1 ? b : a ];
/*...*/
2
07.02.2015, 04:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2015, 04:16

Из двух упорядоченных массивов сформировать один, упорядоченный в обратном направлении
Из двух упорядоченных одномерных массивов (длины K и N) сформируйте одномерный массив размером K+N,...

Из двух одинаково упорядоченных одномерных массивов k и s сформировать один массив размером k+s
7.*.1. Помогите, пожалуйста, решить задачу в С++. Из двух одинаково упорядоченных одномерных...

Массив: Сформировать из элементов двух массивов два новых: один - из положительных, а второй - из отрицательных...
Даны два одномерных массива целых чисел (массив A, состоящий из n элементов, массив B - из m...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru