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

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

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

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

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

Разработать функцию сортировки столбцов двухмерного массива за возрастанием и применить её для сортировки нескольких массивов разной размерности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 19:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка столбцов по возрастанию (C++):

Сортировка столбцов матрицы по возрастанию последних элементов столбцов - C++
Сортировка столбцов по росту последних элементов столбцов.Помогите пожалуйста, надо только фрагмент как его сортировать. Это пример: ...

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

Сортировка столбцов матриц и их сумм по Возрастанию - C++
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной...

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

Сортировка массива: сначала положительные по возрастанию, потом отрицательные по возрастанию - C++
Пользователь вводит массив чисел,нужно отсортировать его методом выбора,что бы сначала шли положительные числа,потом отрицательные...

Сортировка столбцов массива по убыванию элементов столбцов - C++
Заполнить двумерный числовой массив A целыми числами. Вычислить сумму элементов каждого столбца массива. Упорядочить столбцы массива по...

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

Не по теме:

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


Проблему решили?) Если что, первые 2 значения это размеры матрицы
0
crazy1ua
2 / 2 / 0
Регистрация: 09.12.2012
Сообщений: 65
22.10.2013, 20:44  [ТС] #13
Цитата Сообщение от Folko Посмотреть сообщение
crazy1ua,

Не по теме:

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


Проблему решили?) Если что, первые 2 значения это размеры матрицы
Увы нет, и не смогу решить. С программой разобрался. Вот только проверить уже не смогу. Буду верить на слово.
Я уже молчу о том что мне ещё 6 программ нужно написать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2013, 20:44
Привет! Вот еще темы с ответами:

Определить количество столбцов, упорядоченных по возрастанию - C++
Задана матрица В(n,m). Определить количество столбцов, упорядоченных по возрастанию. Каждый второй столбец упорядочить по возрастанию и...

Определить количество столбцов, упорядоченных по возрастанию - C++
задана матрица B(n,m). Определить количество столбцов, упорядоченных по возрастанию. Определить количество нулевых элементов матрицы ...

Отсортировать столбцы матрицы по возрастанию суммы элементов столбцов - C++
Помогите найти ошибку! Почему-то не работает.. Дано двумерный массив. Разместить его столбцы таким образом, чтобы суммы значений...

Найти количество столбцов, где все элементы упорядочены по возрастанию - C++
1. Дан двумерный массив А размера mxn. Найти количество столбцов, где все элементы упорядочены по возрастанию. С комментариями и...


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

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

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