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

Слияние массивов - C++

Восстановить пароль Регистрация
 
pisarev
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 23
20.03.2011, 18:42     Слияние массивов #1
я новичек в программировании. Помогите пожалуйста решить слудеющию задачу на С++.

Заданы три упорядоченных по возрастанию массива f[n], g[m], h[k]
Составить программу слияния этих массивов.

Если возможно, привидите пожалуйста листинг.
Заранее благодарю тех, кто откликнулся.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2011, 18:42     Слияние массивов
Посмотрите здесь:

C++ Слияние трех массивов
C++ Слияние 2-х одномерных массивов
Слияние массивов C++
Слияние отсортированных массивов. C++
C++ Сортировка и слияние массивов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
20.03.2011, 19:03     Слияние массивов #2
Вот решение для двух массивов А[N] и В[M] из которых формируется С[N+M]
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
#include <iostream>
#define N 6
#define M 8
using namespace std;
 
int main()
{
        int A[]={1,3,16,22,31,128};
        int B[]={2,2,18,24,37,44,52,61};
        int C[N+M],i=0,j=0,k=0;
        while(k<N+M)
        {       if((A[i]<B[j] ||  j>=M) && i<N) 
                {       C[k]=A[i];      i++;}
                else
                {       C[k]=B[j];      j++;}
                k++;
        }
 
        for(k=0;k<N+M;k++)
                cout<<C[k]<<"  ";
 
        cin.get();
        return 0;
}
pisarev
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 23
20.03.2011, 19:51  [ТС]     Слияние массивов #3
Огромное спасибо
сягодня обязательно попробую
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
20.03.2011, 20:06     Слияние массивов #4
Можно попробовать реализовать с помощью библиотеки STL:

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
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main (void)
{
    const int SIZE=5;
    // fill
    int A [SIZE]={1,3,16,22,31};
    int B [SIZE]={2,2,18,24,37};
    int C [SIZE]={7,8,12,65,89};
    int TMP [SIZE*2];
    int REZ [SIZE*3];
    // output
    std::cout << "Start matrix A:\n";
    std::copy (A, A+SIZE, std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
    std::cout << "Start matrix B:\n";
    std::copy (B, B+SIZE, std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
    std::cout << "Start matrix C:\n";
    std::copy (C, C+SIZE, std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
    //
    std::merge (A, A+SIZE, B, B+SIZE, TMP);
    std::merge  (TMP, TMP+SIZE*2, C, C+SIZE, REZ);
    //output
    std::cout << "Rezult matrix:\n";
    std::copy (REZ, REZ+SIZE*3, std::ostream_iterator <int> (std::cout, " "));
 
    //exit
    return 0;
}
Yandex
Объявления
20.03.2011, 20:06     Слияние массивов
Ответ Создать тему
Опции темы

Текущее время: 15:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru