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

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

Войти
Регистрация
Восстановить пароль
 
crazy1ua
2 / 2 / 0
Регистрация: 09.12.2012
Сообщений: 65
#1

Сортировка столбцов по возрастанию - C++

22.10.2013, 19:11. Просмотров 569. Ответов 12
Метки нет (Все метки)

Разработать функцию сортировки столбцов двухмерного массива за возрастанием и применить её для сортировки нескольких массивов разной размерности.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 19:11     Сортировка столбцов по возрастанию
Посмотрите здесь:

Отсортировать нечетные столбцы массива по возрастанию суммы элементов этих столбцов C++
Определить количество столбцов, упорядоченных по возрастанию C++
Сортировка по возрастанию C++
C++ Найти количество столбцов, где все элементы упорядочены по возрастанию
C++ сортировка по возрастанию
Сортировка столбцов матриц и их сумм по возрастанию C++
Сортировка столбцов матриц и их сумм по Возрастанию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
22.10.2013, 19:18     Сортировка столбцов по возрастанию #2
crazy1ua, а как определять, какой из столбцов больше? По сумме элементов или среднему значению?
crazy1ua
2 / 2 / 0
Регистрация: 09.12.2012
Сообщений: 65
22.10.2013, 19:23  [ТС]     Сортировка столбцов по возрастанию #3
Цитата Сообщение от Folko Посмотреть сообщение
crazy1ua, а как определять, какой из столбцов больше? По сумме элементов или среднему значению?
По суме элементов.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
22.10.2013, 19:52     Сортировка столбцов по возрастанию #4
crazy1ua, окей, сейчас распишу

Добавлено через 24 минуты
crazy1ua, тестируй, правильно ли все (мало ли)
C++ (Qt)
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
#include <QTextStream>
 
void swap_column (int **arr, int n, int a, int b)
{
    for (int i = 0; i < n; i++)
    {
        int temp = arr[i][a];
        arr[i][a] = arr[i][b];
        arr[i][b] = temp;
    }
}
 
int get_summ (int **arr, int n, int a)
{
    int summ = 0;
    for (int i = 0; i < n; i++) summ += arr[i][a];
    return summ;
}
 
int main(int argc, char *argv[])
{
    QTextStream cout(stdout);
    QTextStream cin(stdin);
    int n,m;
    cout << "N:" << endl;
    cin >> n;
    cout << "M:" << endl;
    cin >> m;
    int **arr = new int*[n];
    for (int i = 0; i < n; i++)
        arr[i] = new int[m];
    /*заполнение массива*/
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
        {
            cout << "arr[" << i << "][" << j << "]:" << endl;
            cin >> arr[i][j];
        }
    cout << endl << "Array:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++) cout << arr[i][j] << "   ";
        cout << endl;
    }
    /*Сортировка пузырьком*/
    for (int i = 0; i < m - 1; i++)
        for (int j = 0; j < m - i; j++)
            if (get_summ(arr,n,j) > get_summ(arr,n,j+1)) swap_column(arr,n,j,j+1);
    /*вывод отсортированной матрицы*/
    cout << endl << "New array:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++) cout << arr[i][j] << "   ";
        cout << endl;
    }
    /*Завершаем программу*/
    for (int i = 0; i < n; i++)
        delete []arr[i];
    delete []arr;
    return 0;
}
5-6 пробных запусков делал с разными размерами матриц, работает
crazy1ua
2 / 2 / 0
Регистрация: 09.12.2012
Сообщений: 65
22.10.2013, 20:01  [ТС]     Сортировка столбцов по возрастанию #5
Цитата Сообщение от Folko Посмотреть сообщение
crazy1ua, окей, сейчас распишу

Добавлено через 24 минуты
crazy1ua, тестируй, правильно ли все (мало ли)
C++ (Qt)
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
#include <QTextStream>
 
void swap_column (int **arr, int n, int a, int b)
{
    for (int i = 0; i < n; i++)
    {
        int temp = arr[i][a];
        arr[i][a] = arr[i][b];
        arr[i][b] = temp;
    }
}
 
int get_summ (int **arr, int n, int a)
{
    int summ = 0;
    for (int i = 0; i < n; i++) summ += arr[i][a];
    return summ;
}
 
int main(int argc, char *argv[])
{
    QTextStream cout(stdout);
    QTextStream cin(stdin);
    int n,m;
    cout << "N:" << endl;
    cin >> n;
    cout << "M:" << endl;
    cin >> m;
    int **arr = new int*[n];
    for (int i = 0; i < n; i++)
        arr[i] = new int[m];
    /*заполнение массива*/
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
        {
            cout << "arr[" << i << "][" << j << "]:" << endl;
            cin >> arr[i][j];
        }
    cout << endl << "Array:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++) cout << arr[i][j] << "   ";
        cout << endl;
    }
    /*Сортировка пузырьком*/
    for (int i = 0; i < m - 1; i++)
        for (int j = 0; j < m - i; j++)
            if (get_summ(arr,n,j) > get_summ(arr,n,j+1)) swap_column(arr,n,j,j+1);
    /*вывод отсортированной матрицы*/
    cout << endl << "New array:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++) cout << arr[i][j] << "   ";
        cout << endl;
    }
    /*Завершаем программу*/
    for (int i = 0; i < n; i++)
        delete []arr[i];
    delete []arr;
    return 0;
}
5-6 пробных запусков делал с разными размерами матриц, работает
Всё отлично, но написано на QText, а на машине на которой будет запускаться нет такой библиотеки
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
22.10.2013, 20:03     Сортировка столбцов по возрастанию #6
crazy1ua, у вас скорее всего вместо QTextStream надо использовать

C++
1
2
#include <iostream>
using namespace std;
как то так.
crazy1ua
2 / 2 / 0
Регистрация: 09.12.2012
Сообщений: 65
22.10.2013, 20:21  [ТС]     Сортировка столбцов по возрастанию #7
Цитата Сообщение от Folko Посмотреть сообщение
crazy1ua, у вас скорее всего вместо QTextStream надо использовать

C++
1
2
#include <iostream>
using namespace std;
как то так.
При размере матрицы 3*3, средний столбик заполнен 0.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
22.10.2013, 20:27     Сортировка столбцов по возрастанию #8
crazy1ua, хммм
Миниатюры
Сортировка столбцов по возрастанию  
crazy1ua
2 / 2 / 0
Регистрация: 09.12.2012
Сообщений: 65
22.10.2013, 20:27  [ТС]     Сортировка столбцов по возрастанию #9
При разных размерностях нулирует 2 столбец.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
22.10.2013, 20:31     Сортировка столбцов по возрастанию #10
crazy1ua, разные размерности
И это не заговор масонов) Вбивал абсолютно рандомные значения ячеек
Миниатюры
Сортировка столбцов по возрастанию  
crazy1ua
2 / 2 / 0
Регистрация: 09.12.2012
Сообщений: 65
22.10.2013, 20:38  [ТС]     Сортировка столбцов по возрастанию #11
Цитата Сообщение от Folko Посмотреть сообщение
crazy1ua, разные размерности
И это не заговор масонов) Вбивал абсолютно рандомные значения ячеек
Кажется я уже догадываюсь. Проблема в win 8. Так как компилировал тут, а запускал на 7. А на 8 запускаеться только в VS и то вылетает.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
22.10.2013, 20:40     Сортировка столбцов по возрастанию #12
crazy1ua,

Не по теме:

ох уж этот билл, даже проги портит


Проблему решили?) Если что, первые 2 значения это размеры матрицы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2013, 20:44     Сортировка столбцов по возрастанию
Еще ссылки по теме:

C++ Отсотрировать столбцы матрицы по возрастанию суммы столбцов
C++ Найти количество столбцов матрицы, элементы которых идут по-возрастанию
C++ Сортировка массива по возрастанию
Определить количество столбцов, упорядоченных по возрастанию C++
Сортировка столбцов массива по убыванию элементов столбцов C++

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

Или воспользуйтесь поиском по форуму:
crazy1ua
2 / 2 / 0
Регистрация: 09.12.2012
Сообщений: 65
22.10.2013, 20:44  [ТС]     Сортировка столбцов по возрастанию #13
Цитата Сообщение от Folko Посмотреть сообщение
crazy1ua,

Не по теме:

ох уж этот билл, даже проги портит


Проблему решили?) Если что, первые 2 значения это размеры матрицы
Увы нет, и не смогу решить. С программой разобрался. Вот только проверить уже не смогу. Буду верить на слово.
Я уже молчу о том что мне ещё 6 программ нужно написать
Yandex
Объявления
22.10.2013, 20:44     Сортировка столбцов по возрастанию
Ответ Создать тему
Опции темы

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