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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ainurahmetgalie
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 5
#1

Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись - C++

16.07.2013, 17:38. Просмотров 1136. Ответов 8
Метки нет (Все метки)

Даны два упорядоченных массива. Нужно слить их в третий, но чтобы элементы не повторялись. (один проход по массивам)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2013, 17:38     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись
Посмотрите здесь:

Даны два двухмерных массива одинаковых размеров. Создать третий массив такого же размера, каждый элемент которого равен 100 C++
C++ Даны 2 упорядоченных одномерных массива. создать 3 одномерный массив, содержащий упорядоченные элементы 1 и 2 массива.
C++ Даны два массива, упорядоченных по возрастанию
Даны два массива одного размера. Получить третий массив, каждый элемент которого... C++
C++ Слить два упорядоченных массива в третий
C++ 11.247. Даны два массива одного размера. Получить третий массив, каждый элемент которого равен:сумме элементов с тем же номером в заданных массивах
Нужен листинг на С++ (даны два вектора, упорядоченные по возрастанию. Слить их в один вектор, так чтобы сохранилась упорядоченность) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
4220 / 2194 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.07.2013, 17:54     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись #2
Слияние двух отсортированых массивов в один
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 17:58     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись #3
в каком виде даны? подробней напиши
ainurahmetgalie
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 5
16.07.2013, 18:11  [ТС]     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись #4
допустим я ввожу
элементы 1 массива: 1, 7, 9, 11
элементы 2 массива: 1, 2, 3, 5, 6, 6.
3 массив должен получится таким: 1, 2, 3, 5, 6, 7, 9, 11. т.е. не повторяются элементы
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
16.07.2013, 18:20     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись #5
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 <algorithm>
#include <iostream>
#include <array>
 
int main()
{
    const size_t size = 0x5; // размер массивов
 
    std::array<int, size> arr1 = { 5, 3, 2, 1, 4 }; // первый массив
    std::array<int, size> arr2 = { 1, 12, 5, 33, 3}; // второй массив
 
    std::sort(arr1.begin(), arr1.end()); // сортируем первый
    std::sort(arr2.begin(), arr2.end()); // сортируем второй
 
    std::array<int, size+size> arr3; // третий массив, размер которого в 2 раза больше
    std::merge(arr1.begin(), arr1.end(), arr2.begin(), arr2.end(), arr3.begin()); // копируем 
    // в 3 массив, елементы 1 и 2
    auto arr3_end = std::unique(arr3.begin(), arr3.end()); // удаляем дубликаты
 
    std::for_each(arr3.begin(), arr3_end, [](int elem) {
        std::cout << elem << ' '; } ); // выводим 3 массив на экран
 
    return 0;
}
ainurahmetgalie
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 5
16.07.2013, 18:22  [ТС]     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись #6
мне надо без использования функций, и sort
Issues
16.07.2013, 18:23
  #7

Не по теме:

Цитата Сообщение от ainurahmetgalie Посмотреть сообщение
мне надо без использования функций, и sort
надо, значит делай! Где твои наработки? Или все за тебя написать?

ainurahmetgalie
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 5
16.07.2013, 18:28  [ТС]     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись #8
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
# include <iostream>
# include <conio.h>
# include <iostream>
# include <conio.h>
 
# include <algorithm>
 
 
using namespace std;
 
 
const int N = 4;
const int M = 7;
 
int a [N], b [M], c [N+M], temp;
 
int main ()
{
   for ( int k=0; k < N; k++ )
      cin >> a [k];           // читаем сами числа массива А
 
   for ( int k=0; k < M; k++ )
      cin >> b [k];           // читаем сами числа массива В
 
/* дурацкое решение - вариант 1
// перекинуть в массив С весь массив А, потом весь массив В
 
   for ( int i=0; i < N; i++)   // перекинуть в начало массива С весь массив А
      c [i] = a [i];
 
   for ( int i=0; i < M; i++)   // перекинуть в продолжение массива С весь массив В
      c [i+N] = b [i];
 
   sort (c, c+N+M);             // сортировка стандартная
*/
 
// СЛИЯНИЕ - вариант-2
// 1 слияние, пока есть числа в обоих массивах
// 2 остаток одного массива перекидывается в конец результата
 
   int i, j, m;
   for ( i=0, j=0, m=0; i < N && j < M; m++ )    // 1 слияние, пока есть числа в обоих массивах
      if ( a [i] < b [j] )                       // в С попадает меньшее из двух чисел Ai Bj
         { c [m] = a [i]; i++; }
      else
         c [m] = b [j], j++;
       if ( i < N )                                  // остаток массива A перекидывается в конец результата
      for ( ; i < N; i++, m++ )
         c [m] = a [i];
   else                                          // остаток массива B перекидывается в конец результата
      for ( ; j < M; j++, m++ )
         c [m] = b [j];
    
 
   for ( int k=0; k < N+M; k++ )
      cout << c [k] << " ";
 
   getch ();
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 18:32     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись
Еще ссылки по теме:

C++ Объединить два массива так, чтобы числа в новом массиве не повторялись
Объединить два массива одинаковой длины в третий, чередуя элементы первого и второго массивов C++
Дано два одномерных массива, создать третий массив который содержит элементы первого массива C++
C++ Объединить два массива одинаковой длины в третий массив, чередуя элементы первого и второго массивов
даны 2 массива,упорядоченные по убыванию,получить из них третий,в котором элементы расположены по возрастанию C++

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
4220 / 2194 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.07.2013, 18:32     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись #9
ainurahmetgalie, я же вам дал ссылку на алгоритмы, там тоже без повторения требуется построить, НО в порядке убывания. посмотрите, переделать очень просто.
Yandex
Объявления
16.07.2013, 18:32     Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись
Ответ Создать тему
Опции темы

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