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

Сортировка 2-ух массивов - C++

Восстановить пароль Регистрация
 
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
04.07.2013, 12:31     Сортировка 2-ух массивов #1
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
 
int main( int argc, char** argv ) 
{
    const int n=5;
    const int m=5;
    int i,j,t; 
    int c[n+m]; 
    int a[n], b[m];
    cout << "vvedite mas A: " << endl;
    for (i=0; i<n; i++)
    {
        cin >> a[i];
    }
    cout << "vvedite mas B: " << endl;
    for (j=0; j<m; j++)
    {
        cin >> b[j];
    }
    
    //for (int i=0;i<n;i++)
    //{
    //  for (int j=0;j<i;j++)
    //  {
    //      if(a[j]>a[j+1])
    //      {
 //           int tmp=a[j];
 //           a[j]=a[j+1];
 //           a[j+1]=tmp;
    //      }
    //  }
 //     }
    //сортировка A
    for (i = 0; i < n; i++)
    {
        t = a[i];
        for (j = i; j > 0 && a[j-1] > t; j--)       //сортировка массива
        {
            a[j] = a[j-1];
        }
        a[j] = t;
    }
    //сортировка B
    for (i = 0; i < m; i++)
    {
        t = b[i];
        for (j = i; j > 0 && b[j-1] > t; j--)       //сортировка массива
        {
            b[j] = b[j-1];
        }
        b[j] = t;
    }
    cout << " massiv A: " << endl;
    for (i=0; i<n; i++)
    {
        cout << a[i] << " " ;
    }
    cout << endl;
    cout << " massiv B: " << endl;
    for (i=0; i<m; i++)
    {
        cout << b[i] << " " ;
    }
    cout << endl;
    int maximum = max(n,m);
 
    for (int i=0; i<n; i++) //сливаются все элементы в один массив С
    {                       
        for (j=0; j < m; j++)
        {
            if (a[i] > b[j])
            {
                int temp = a[i];
                c[i] = b[i];
                c[i+1]=temp;
            }
            else
            {
                int temp = b[j];
                c[i] = a[i];
                c[i+1]=temp;
            }
        }
        
    }
    cout << " massiv C: " << endl;
    for (i=0; i<n+m; i++)
    {
        cout << c[i] << " " ;
    }
    system("pause");
    return 0;
}
Косяк с сортировкой
вот что выводит:

Кликните здесь для просмотра всего текста
vvedite mas A:
7
2
6
4
6
vvedite mas B:
2
0
9
4
1
massiv A:
2 4 6 6 7
massiv B:
0 1 2 4 9
massiv C:
2 4 6 6 7 9 -858993460 -858993460 -858993460 -858993460 Для продолжения нажмите
любую клавишу . . .


что не так с сортировкой? сортировка по неубыванию
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 12:31     Сортировка 2-ух массивов
Посмотрите здесь:

Сортировка массивов в С C++
Сортировка массивов. C++
C++ сортировка массивов
C++ Сортировка массивов
C++ обработка одномерных массивов и сортировка массивов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newyork7776
 Аватар для newyork7776
346 / 339 / 79
Регистрация: 21.05.2013
Сообщений: 1,305
Завершенные тесты: 1
04.07.2013, 14:37     Сортировка 2-ух массивов #2
Задание:2 масива (1) нужно их закинуть в 3 масив(1) и сортировать от мин до макс?
правильно или нет?

Добавлено через 1 час 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
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
void SortMass(int* m, int n)
{
     for(int i = n - 1; i >= 1; i--)
       for(int j = 0; j < i; j++)
       {
               if(m[j] > m[j+1])
               {
                       int foo = m[j];
                       m[j] = m[j+1];
                       m[j+1] = foo;
               }
       }  
}
int main()
{
    srand(time(NULL));
    int n1,n2,n3;
    int mas[50],mass[50],masss[100];
    setlocale(LC_ALL, "Russian");
    cout << "Введите количество елементов масива1 = ";cin >> n1;
    cout << "Введите количество елементов масива2 = ";cin >> n2;
    n3=(n1+n2);
    cout << "Масив1 = ";
    for (int i=1;i<=n1;i++)
    {
        mas[i]=rand()%10-5;
        cout << mas[i] << " ";
        masss[i]=mas[i];
    }
    cout << "\n";   
    cout << "Масив2 = ";
    for (int i=1;i<=n2;i++)
    {
        mass[i]=rand()%21-10;
        cout << mass[i] << " ";
        masss[i+n1]=mass[i];
    }
        cout << "\n";
    cout << "Масив3 [start]= ";
    for (int i=1;i<=n3;i++)
    {
        cout << masss[i] << " ";
    }
    SortMass(masss,n3);
        cout << "\n";
    cout << "Масив3 [finish]= ";
    for (int i=1;i<=n3;i++)
    {
        cout << masss[i] << " ";
    }
    cout << "\n";
    system("pause");
}
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
04.07.2013, 14:40  [ТС]     Сортировка 2-ух массивов #3
Цитата Сообщение от newyork7776 Посмотреть сообщение
Задание:2 масива (1) нужно их закинуть в 3 масив(1) и сортировать от мин до макс?
правильно или нет?

Добавлено через 1 час 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
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
void SortMass(int* m, int n)
{
     for(int i = n - 1; i >= 1; i--)
       for(int j = 0; j < i; j++)
       {
               if(m[j] > m[j+1])
               {
                       int foo = m[j];
                       m[j] = m[j+1];
                       m[j+1] = foo;
               }
       }  
}
int main()
{
    srand(time(NULL));
    int n1,n2,n3;
    int mas[50],mass[50],masss[100];
    setlocale(LC_ALL, "Russian");
    cout << "Введите количество елементов масива1 = ";cin >> n1;
    cout << "Введите количество елементов масива2 = ";cin >> n2;
    n3=(n1+n2);
    cout << "Масив1 = ";
    for (int i=1;i<=n1;i++)
    {
        mas[i]=rand()%10-5;
        cout << mas[i] << " ";
        masss[i]=mas[i];
    }
    cout << "\n";   
    cout << "Масив2 = ";
    for (int i=1;i<=n2;i++)
    {
        mass[i]=rand()%21-10;
        cout << mass[i] << " ";
        masss[i+n1]=mass[i];
    }
        cout << "\n";
    cout << "Масив3 [start]= ";
    for (int i=1;i<=n3;i++)
    {
        cout << masss[i] << " ";
    }
    SortMass(masss,n3);
        cout << "\n";
    cout << "Масив3 [finish]= ";
    for (int i=1;i<=n3;i++)
    {
        cout << masss[i] << " ";
    }
    cout << "\n";
    system("pause");
}
массив А и Б нужно отсортировать и слить в С, доп сортировки С не должно быть, т.е. мне нужно сравнивать элементы из А и Б и вставлять в С сначала наименьший, потом наибольший
newyork7776
 Аватар для newyork7776
346 / 339 / 79
Регистрация: 21.05.2013
Сообщений: 1,305
Завершенные тесты: 1
04.07.2013, 16:58     Сортировка 2-ух массивов #4
сначала сортирокать А и В а потом слить в С?
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
04.07.2013, 17:15  [ТС]     Сортировка 2-ух массивов #5
Цитата Сообщение от newyork7776 Посмотреть сообщение
сначала сортирокать А и В а потом слить в С?
ага

только сортировать С нельзя
newyork7776
 Аватар для newyork7776
346 / 339 / 79
Регистрация: 21.05.2013
Сообщений: 1,305
Завершенные тесты: 1
04.07.2013, 17:54     Сортировка 2-ух массивов #6
так может получиться что масив С не будеи построен по возростанию или так нормально?

Добавлено через 22 минуты
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
void SortMass(int* m, int n)
{
     for(int i = n - 1; i >= 1; i--)
       for(int j = 0; j < i; j++)
       {
               if(m[j] > m[j+1])
               {
                       int foo = m[j];
                       m[j] = m[j+1];
                       m[j+1] = foo;
               }
       }  
}
int main()
{
    srand(time(NULL));
    int n1,n2,n3,k=1;
    int mas[50],mass[50],masss[100];
    setlocale(LC_ALL, "Russian");
    cout << "Введите количество елементов масива1 = ";cin >> n1;
    cout << "Введите количество елементов масива2 = ";cin >> n2;
    n3=(n1+n2);
    cout << "Масив1 [start]= ";
    for (int i=1;i<=n1;i++)
    {
        mas[i]=rand()%10;
        cout << mas[i] << " ";
    }
    SortMass(mas,n1);
    cout << "\n\t\tМасив1 [finish]= ";
    for (int i=1;i<=n1;i++)
    {
        cout << mas[i] << " ";
    }
    cout << "\nМасив2 [start]= ";
    for (int i=1;i<=n2;i++)
    {
        mass[i]=rand()%20;
        cout << mass[i] << " ";
        masss[i+n1]=mass[i];
    }
    SortMass(mass,n2);
    cout << "\n\t\tМасив2 [finish]= ";
    for (int i=1;i<=n2;i++)
    {
        cout << mass[i] << " ";
    }
    cout << "\nМасив3 = ";
    {
        int j=1;
        for (int i=1;i<=n1;i++)
        {
            if (mas[i]<mass[j])
            {masss[k]=mas[i];}
            else
            {masss[k]=mass[j];j++;i--;}
            k++;
        }
    }
    for (int i=1;i<=n3;i++)
    {
        cout << masss[i] << " ";
    }
    cout << "\n";
    system("pause");
}

криво но примерно вот так
(накидал код подправить немного "наверно" и должно работать,протосопроверить нету где)
Yandex
Объявления
04.07.2013, 17:54     Сортировка 2-ух массивов
Ответ Создать тему
Опции темы

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