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

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

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

Как вывести два массива разных сортировок? - C++

20.02.2015, 19:52. Просмотров 342. Ответов 1
Метки нет (Все метки)

Необходимо сделать одну программу , где нужно вывести сначала неотсортированный массив, затем один массив отсортированный вставками, и один - выбором/отбором. Я сделал две сортировки по отдельности (прикрепил два абсолютно идентичных работающих кода с этими двумя сортировками). Но как их объединить в один код? Вроде бы необходимо создавать копию массива для этих нужд, но как это сделать. Заранее благодарю!

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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
const int raw = 20, col = 20;
 
void insertSort(int  a[raw][col], int z, int q)
{
    int tmp, pos;
    const int n = 5, k = 5;
    a[n][k]; //n - строк в массиве, k - столбцов.
 
    for (int i = 0; i < n; ++i){ // i - номер текущей строки
        for (int j = 0; j < k; ++j) // j - номер текущего шага
        {
            pos = j;
            tmp = a[i][j];
            //if (SumDigits(a[pos][0])>SumDigits(a[pos - 1][0]))
            for (int h = j + 1; h < z; ++h) // цикл выбора наименьшего элемента
            {
                if (a[i][h] > tmp)
 
 
                {
                    pos = h;
                    tmp = a[i][h];
                }
            }
            a[i][pos] = a[i][j];
            a[i][j] = tmp; // меняем местами наименьший с a[i]
        }
    }
}
 
int main()
{
    srand((unsigned)time(0));
    setlocale(LC_ALL, "Russian");
    int a[raw][col];
    int x, y;
    int z = 0, q = 0;
    while (z<1 || z>20 || z != int(z)){
        cout << "Введите количество строк" << endl << "(целое, неотрицательное, не более 20):";
        cin >> z;
    }
    while (q<1 || q>20 || q != int(q)){
        cout << "Введите количество столбцов:" << endl << "(целое, неотрицательное, не более 20):";
        cin >> q;
    }
    for (x = 0; x<z; x++)
    {
        for (y = 0; y<q; y++)
        {
            a[x][y] = rand() % 10;
            cout << a[x][y] << " ";
        }
        cout << "\n";
    }
 
    cout << endl << endl;
    cout << "Сортировка вставками " << endl;
    insertSort(a, z, q);
    for (x = 0; x<z; x++)
    {
        for (y = 0; y<q; y++)
        {
            cout << "  " << a[x][y];
        }
        cout << "\n";
    }
    system("pause");
    return (0);
}

2-ой код. Сортировка выбором/отбором
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 "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
const int raw = 20, col = 20;
 
void selectSort(int  a[raw][col], int z, int q)
{
    int tmp, i, j, pos, j1;
    for (i = 0; i < z; ++i) // цикл по строкам
    {
        for (j1 = 0; j1 < q; ++j1) // j1 - номер текущего шага
        {
            pos = j1;
            tmp = a[i][pos];
            for (j = j1 + 1; j < q; ++j) // цикл выбора наименьшего элемента
            {
                if (a[i][j] > tmp)
                {
                    pos = j;
                    tmp = a[i][j];
                }
            }
 
            a[i][pos] = a[i][j1];
            a[i][j1] = tmp; // меняем местами наименьший с a[j1]
        }
    }
}
 
int main()
{
    srand((unsigned)time(0));
    setlocale(LC_ALL, "Russian");
    int a[raw][col];
    int x, y;
    int z = 0, q = 0;
    while (z<1 || z>20 || z != int(z)){
        cout << "Введите количество строк" << endl << "(целое, неотрицательное, не более 20):";
        cin >> z;
    }
    while (q<1 || q>20 || q != int(q)){
        cout << "Введите количество столбцов:" << endl << "(целое, неотрицательное, не более 20):";
        cin >> q;
    }
    for (x = 0; x<z; x++)
    {
        for (y = 0; y<q; y++)
        {
            a[x][y] = rand() % 10;
            cout << a[x][y] << " ";
        }
        cout << "\n";
    }
 
    cout << endl << endl;
    selectSort(a, z, q);
    for (x = 0; x<z; x++)
    {
        for (y = 0; y<q; y++)
        {
            cout << a[x][y] << " ";
        }
        cout << "\n";
    }
    system("pause");
    return (0);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2015, 19:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как вывести два массива разных сортировок? (C++):

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

Два разных массива записать последовательно в третий - C++
Пожалуйста помогите! Ввод-два массива разной длинны.Записать в третий-сначала идут элементы первого затем второго массива. Зарание...

Подскажите как вывести два массива рядом, а не под друг другом - C++
У меня есть две функции, которые выводят два массива. Подскажите как мне сделать так, чтоб они выводились рядом друг с другом, а не друг...

Как записать два разных класса в массив? - C++
допустим есть vector&lt;class_a&gt; cont_a; vector&lt;class_b&gt; cont_b; // тут мы их заполнили допустим по 800 элементов в каждом векторе.и...

Сравнение 2-х сортировок массива - C++
Есть два метода сортировки массива Вставки и Пузырька. Как их сравнить, что бы узнать, который из них лучше сортирует. Если я не ошибаюсь,...

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

1
_Valera_
489 / 371 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
20.02.2015, 22:17 #2
Ну цель я так понял копировать массив:

for(int i=0;i<size_array;++i)
{
array_new[i]=array[i];
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2015, 22:17
Привет! Вот еще темы с ответами:

Задать два числа как два массива и потом выполнить сложение, умножение и деление - C++
Здравствуйте! Суть задачи в следующем: Нужно задать два числа как два массива и потом выполнить сложение, умножение и деление с помощью...

Задать и вывести два массива - C++
1. Описать и задать 2 массивы типа int и float размерностью 7 Вывести на экран значения всех элементов обоих массивов с использованием...

Найти медиану массива без сортировок - C++
В массиве A (считать его из файла) (m нечетно), не содержащем одинаковых элементов, найти его медиану, т.е. такой элемент b, для которого в...

Написать программу, сравнивающую время сортировок массива - C++
Помогите пожалуйста ума не приложу как сделать эту задачу :( Программа должна запрашивать из файла двухмерный массив. Результат...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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