Форум программистов, компьютерный форум CyberForum.ru

Объединение двух массивов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сформировать массив путем слияние двух других http://www.cyberforum.ru/cpp-beginners/thread527563.html
помогите,пожалуйста,решить! Задан массив A из N элементов и массив B из M элементов. Сформировать массив L из массивов A и B путем их слияния так, чтобы сначала располагались все элементы массива A, а затем все элементы массива B. Значения N и M ввести с клавиатуры, а массивы A и B сформировать из случайных чисел в диапазоне от 0 до 100 Добавлено через 59 минут помогите решить ее.очень нужно...
C++ Рекурсивный обход двумерного массива Здравствуйте! Не могу составить алгоритм рекурсивного обхода двумерного массива. Например есть массив: 1 2 2 0 1 1 1 2 2 , выбираем произвольную точку, скажем это = 1, то нужно проверить все окружающие его числа, и если они больше чем 0, то увеличить счетчик. Мне нужно алгоритм только для случая, если выбранная тока находится по центру, и у него проверяемых чисел 8. Было бы классно с... http://www.cyberforum.ru/cpp-beginners/thread527530.html
C++ среднее арифметическое
Написать программу которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов массива. Для доступа к элементам массива использовать указатель на указатель.
C++ Квадртная матрица
Ребят, помогите, как правильно создать квадратную матрицу, вводить размерность и данные нужно самому, а создание и просмотр матрицы нужно разбить на две функции.
C++ Подсчитать количество узлов правого и левого сыновей дерева. http://www.cyberforum.ru/cpp-beginners/thread527519.html
Подсчитать количество узлов имеющих левого и правого сыновей, ключи которых находятся в интервале Помогите пожалуста ! Вот какбы сделал рекурсивную функцыю int NodeCount(BinaryTreeNode * node) { if (node->leftChild == NULL && node->rightChild == NULL) return 1;
C++ Поиск в Бинарном Дереве! Задано бинарное дерево. Определить, есть ли в этом дереве хотя бы два одинаковых элемента. Вывести на экран все одинаковые элементы в порядке возрастания значений. Помогите если кто знает неправильно сделал алгоритм поиска двух одинаковых елементов.Предмет теория алгоритмов , по этому контейнеры нельзя использовать... #include "stdafx.h" #include "stdafx.h" #include <iostream> using... подробнее

Показать сообщение отдельно
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
04.03.2013, 19:16     Объединение двух массивов
Вчера нам такую же задачку задали...
Вот мой вариант:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
 
using namespace std;
 
template <class T, int n>
void init (T (&arr) [n], int dx)
{
    for (int i=0;i<n;i++)
    {
        *(arr+i)=i*dx;
    }
}
 
template <class T, int n>
void out (T (&arr) [n])
{
    for (int i=0;i<n;i++)
    {
        cout << *(arr+i) << " ";
    }
    cout << "\n\n";
}
 
template <class T, int n, int m>
void add (T (&a) [n], T (&b) [m], T (&c) [n+m])
{
    for (int i=0,j=0,h=0;h<(n+m);h++)
    {
        if (i==n)
        {
            *(c+h)=*(b+j);
            j++;
            continue;
        }
        if (j==m)
        {
            *(c+h)=*(a+i);
            i++;
            continue;
        }
        if (*(b+j)<=*(a+i))
        {
            *(c+h)=*(b+j);
            j++;
        }
        else
        {
            *(c+h)=*(a+i);
            i++;
        }
    }
}
 
 
template <class T, int n, int m>
void add2 (T (&a) [n], T (&b) [m], T (&c) [n+m])
{
    for (int i=0,j=0,h=0;h<(n+m);)
    {
        while(*(a+i)<=*(b+j)&&i<n||(j==m&&i<n))
        {
            *(c+h++)=*(a+i++);
        }
        while(*(b+j)<=*(a+i)&&j<m||(i==n&&j<m))
        {
            *(c+h++)=*(b+j++);
        }
    }
}
 
int main()
{
    const int n=6,m=7;
    int a[n];
    int b[m];
    int c[n+m];
 
    init(a,1);
    out(a);
    init(b,2);
    out(b);
    add(a,b,c);
    out(c);
 
    add2(b,a,c);
    out(c);
 
    return 0;
}
 
Текущее время: 06:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru