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

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

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

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

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

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

Слить два упорядоченных массива в третий - C++
помогите чутка,надо слить два массива в один и упорядочить,создал два упорядоченых массива а как ввести их значения в 3ий не пойму#include...

Слить два массива в третий отсортированный по убыванию, без дублей - C++
Даны два массива. Массив А состоит из N элементов и отсортирован по возрастанию. Массив B состоит из M элементов и отсортирован по...

Даны два массива, упорядоченных по возрастанию - C++
Даны два массива, упорядоченных по возрастанию: А и B. Сформируйте массив C, состоящий из элементов массивов А и В, упорядоченный по...

Нужен листинг на С++ (даны два вектора, упорядоченные по возрастанию. Слить их в один вектор, так чтобы сохранилась упорядоченность) - C++
Задание: Даны два вектора {хi}, {уi}, i = 1,..., 10, упорядоченные по возрастанию. Слить их в один вектор {zi}, i = 1, …, 20, так чтобы...

Объединить два массива так, чтобы числа в новом массиве не повторялись - C++
я даже их объединить не могу, они разной размерности и не выходит=( вот что я писала #include <QCoreApplication> #include <iostream>...

Даны 2 упорядоченных одномерных массива. создать 3 одномерный массив, содержащий упорядоченные элементы 1 и 2 массива. - C++
Даны 2 упорядоченных одномерных массива. создать 3 одномерный массив, содержащий упорядоченные элементы 1 и 2 массива.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.07.2013, 17:54 #2
Слияние двух отсортированых массивов в один
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
16.07.2013, 17:58 #3
в каком виде даны? подробней напиши
0
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. т.е. не повторяются элементы
0
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;
}
1
ainurahmetgalie
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 5
16.07.2013, 18:22  [ТС] #6
мне надо без использования функций, и sort
0
Issues
16.07.2013, 18:23
  #7

Не по теме:

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

1
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;
}
0
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.07.2013, 18:32 #9
ainurahmetgalie, я же вам дал ссылку на алгоритмы, там тоже без повторения требуется построить, НО в порядке убывания. посмотрите, переделать очень просто.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 18:32
Привет! Вот еще темы с ответами:

Даны два массива одного размера. Получить третий массив, каждый элемент которого... - C++
Даны два массива одного размера. Получить третий массив, каждый элемент которого равен: а) сумме элементов с тем же номером в заданных...

Дано два одномерных массива, создать третий массив который содержит элементы первого массива - C++
Дано два одномерных массива, создать третий массив который содержит элементы первого массива, но без элементов второго массива. Заранее...

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

Даны два двухмерных массива одинаковых размеров. Создать третий массив такого же размера, каждый элемент которого равен 100 - C++
Даны два двухмерных массива одинаковых размеров. Создать третий массив такого же размера, каждый элемент которого равен 100, если...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.07.2013, 18:32
Ответ Создать тему
Опции темы

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