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

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

Восстановить пароль Регистрация
 
AZIZBEK
 Аватар для AZIZBEK
0 / 0 / 0
Регистрация: 16.06.2012
Сообщений: 37
05.09.2012, 21:38     объединение массива #1
Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и найдите его минимальный элемент, отсортировать по убыванию,
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2012, 21:38     объединение массива
Посмотрите здесь:

C++ Объединение переменных
C++ Не происходит объединение?
Объединение массивов! C++
Алгоритм объединение. C++
C++ Объединение массивов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.09.2012, 21:45     объединение массива #2
merge вам в помощь.
Петррр
 Аватар для Петррр
5917 / 3354 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
05.09.2012, 21:50     объединение массива #3
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
#include <iostream>
#include <iterator>
#include <algorithm>
#include <random>
#include <array>
#include <vector>
#include <functional>
 
int main()
{
    std::array<int, 5> array1;
    std::array<int, 6> array2;
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dist(0, 10);
    std::generate(array1.begin(), array1.end(), std::bind(dist, gen));
    std::cout << "Array 1: \n";
    std::copy(array1.begin(), array1.end(), std::ostream_iterator<int>(std::cout, " "));
    std::generate(array2.begin(), array2.end(), std::bind(dist, gen));
    std::cout.put('\n');
    std::copy(array2.begin(), array2.end(), std::ostream_iterator<int>(std::cout, " "));
    std::vector<int> vec(array1.begin(), array1.end());
    std::copy(array2.begin(), array2.end(), std::back_inserter(vec));
    std::sort(vec.begin(), vec.end());
    std::cout << "\nResult: \n";
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << "\nMinimum: " << *std::min_element(vec.begin(), vec.end()) << std::endl;
    return 0;
}
test
AZIZBEK
 Аватар для AZIZBEK
0 / 0 / 0
Регистрация: 16.06.2012
Сообщений: 37
05.09.2012, 22:26  [ТС]     объединение массива #4
Другого варианте нету
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
05.09.2012, 23:01     объединение массива #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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <Windows.h>
using namespace std;
 
template< class T >
void bubbleSort(T* arr, int size)  // ф-ция для сортировки
{
    T tmp;
    for(int i = 0; i < size - 1; ++i) // i - номер прохода
    {            
        for(int j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] > arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}
 
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
    int first[4] = {5,7,4,12};
    int second[6] = {4,6,7,2,5,9};
    int sizeOfFirst = sizeof first/sizeof (int);
    int sizeOfSecond = sizeof second/sizeof (int);
    int sizeOfAll = sizeOfFirst + sizeOfSecond;
    int* total = new int[sizeOfAll];
    int i = 0;
    for (; i<sizeOfFirst; i++)
        total[i] = first[i];
    for (int j = 0; j<sizeOfSecond; j++)
        total[i++] = second[j];
    bubbleSort(total, sizeOfAll);
    for (int i = 0; i<sizeOfAll; i++)
        cout<<total[i]<<" ";
    cout<<endl;
    cout<<"Минимальный елемент: "<<total[sizeOfAll-1];
    cout<<endl;
    delete [] total;
    system("pause");
    return 0;
}
ovli
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 16
05.09.2012, 23:05     объединение массива #6
На том этапе, что мы прошли решается через указатели, оно же в домашнем задании, сейчас буду рожать...
В приложении лекция
Вложения
Тип файла: pdf Урок 12 C.pdf (98.9 Кб, 9 просмотров)
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
05.09.2012, 23:25     объединение массива #7
Вот такой вариант
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
#include <iostream> 
#include <algorithm>
using namespace std;  
 
bool comp (int a, int b) 
{ 
    return a > b; 
}
 
int main() 
{   
    const int size = 5; 
    const int size2 = 7;  
    unsigned int i;
 
    int array[size] = { 11, 33, 4, 5, 7 }; 
    int array2[size2] = { 67, 12, 4, 8, 90, 123, 6 };  
    int array3[size+size2];
 
    sort(array, array+size); 
    sort(array2, array2+size2);
    merge(array, array+size, array2, array2+size2, array3); 
 
    sort(array3, array3 + size + size2, comp);
    for ( i = 0; i < size + size2; i++) 
        cout << array3[i] << " "; 
    cout << endl; 
    cout <<"Min element " <<  *min_element(array3, array3+size+size2) << endl;
    
}
ovli
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 16
07.09.2012, 23:49     объединение массива #8
Вот уродство рожденное мной, с сортировкой выбором и перестановкой четных и нечетных, и там в ходе возникли вопросики...Строки 76 и 79, почему если отобразить элементы массива, то они дублирутся например 20 20 11 11 25 25 ...и т.д. ?
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
90
91
92
93
94
95
96
97
98
99
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
template<class T>
void selectSort(T *ar,int SIZE)
{
int i,j,k;
T x;
for(i=0;i<SIZE;i++)
{
k=i;
x=*(ar+i);
for(j=i+1;j<SIZE;j++)
    if(*(ar+j)<x)
    {
k=j;
x=*(ar+j);
    }
    *(ar+k)=*(ar+i);
    *(ar+i)=x;
}
}
template<class T>
void change(T *ar, int SIZE)
{
    T x;
    int i;
    for(i=0;i<SIZE;i++)
    {
        if(i%2!=0)
            {
                x=*(ar+i-1);
        *(ar+i-1)=*(ar+i);
        *(ar+i)=x;
        }
    }
}
void change_Const(px, py)
{
    int temp;
    temp=*px;
    *px=*py;
    *py=temp;
}
void main()
{
    srand(time(NULL));
const int size1=6,size2=8;
int arrey1[size1],arrey2[size2];
for(int i=0;i<size1;i++)
{
    arrey1[i]=rand()%100;
}
selectSort(arrey1,size1);
for(int i=0;i<size1;i++)
{
    cout<<arrey1[i]<<"\t";
}
cout<<endl;
for(int i=0;i<size2;i++)
{
    arrey2[i]=rand()%100;
}
selectSort(arrey2,size2);
for(int i=0;i<size2;i++)
{
    cout<<arrey2[i]<<"\t";
}
cout<<endl;
int arrey3[size1+size2];
for(int i=0;i<size1+size2;i++)
{
    if(i<size1)
        *(arrey3+i)=*(arrey1+i);
    //cout<<arrey3[i]<<"\t";
    else
        *(arrey3+i)=*(arrey2+i-size1);
        //cout<<arrey3[i]<<"\t";
}
cout<<endl;
/*for(int i=0;i<size1+size2;i++)
{
cout<<arrey3[i]<<"\t";
}
cout<<endl;*/
selectSort(arrey3,size1+size2);
for(int i=0;i<size1+size2;i++)
{
cout<<*(arrey3+i)<<"\t";
}
cout<<endl;
change(arrey3, size1+size2);
for(int i=0;i<size1+size2;i++)
{
cout<<*(arrey3+i)<<"\t";
}
cout<<endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2012, 06:08     объединение массива
Еще ссылки по теме:

объединение case-ов C++
Объединение циклов C++
Объединение массивов C++

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.09.2012, 06:08     объединение массива #9
Цитата Сообщение от ovli Посмотреть сообщение
почему если отобразить элементы массива, то они дублирутся например 20 20 11 11 25 25 ...и т.д. ?
см комментарии:
C++
1
2
3
4
5
6
7
8
9
for(int i=0;i<size1+size2;i++)
{
    if(i<size1)
        *(arrey3+i)=*(arrey1+i);
    //cout<<arrey3[i]<<"\t";// потому что эта строка будет всегда выполняться (при любом i)
    else//на эту строчку компилятор должен ругаться (ведь это else не привязано ни какому if)
        *(arrey3+i)=*(arrey2+i-size1);
        //cout<<arrey3[i]<<"\t";// потому что эта строка будет всегда выполняться (при любом i)
}
В общем правильно будет так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    for(int i=0;i<size1+size2;i++)
    {
        if(i<size1)
        {
            *(arrey3+i)=*(arrey1+i);
            cout<<arrey3[i]<<"\t";
        }
        else
        {
            *(arrey3+i)=*(arrey2+i-size1);
            cout<<arrey3[i]<<"\t";
        }
    }
Yandex
Объявления
08.09.2012, 06:08     объединение массива
Ответ Создать тему
Опции темы

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