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

Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов - C++

Восстановить пароль Регистрация
 
Vovanich13
1 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 91
02.04.2014, 18:25     Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов #1
Данная действительно матрица размером n * m. Сортировать (переставить) строки матрицы в порядке убывания значений первых элементов строк
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 18:25     Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов
Посмотрите здесь:

Упорядочить строки матрицы в порядке неубывания их первых элементов. C++
Упорядочить строки матрицы в порядке неубывания их первых элементов C++
C++ Переставить строки в порядке убывания сумм элементов
Упорядочить строки матриц в порядке убывания наибольших элементов строк C++
Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной части матрицы. C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
02.04.2014, 18:37     Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов #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
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
 
#include <iostream>
 
const int n = 5, m = 10;
 
template<class T>
void swapptr(T*& p1, T*& p2)
 { T* _tp = p1; p1 = p2; p2 = _tp; }
 
using namespace std;
 
int main(int argc, char** argv)
{
    int** A = new int*[n];
    memset((void*)A, 0x00, 4 * n);
 
    for (int t1 = 0; t1 < n; t1++)
    {
        A[t1] = new int[m];
        for (int t2 = 0; t2 < m; t2++)
        {
            A[t1][t2] = rand() % 9 + 1;
            std::cout << A[t1][t2] << " ";
        }
 
        std::cout << endl;
    }
 
    std::cout << endl << endl;
 
    for (int i = 0; i < n; i++)
    {
        int max = i;
        for (int j = max+1; j < n; j++)
            max = (A[j][0] > A[max][0]) ? j : max;
 
        swapptr<int>(A[i],A[max]);
    }
 
    for (int z1 = 0; z1 < n; z1++)
    {
        for (int z2 = 0; z2 < m; z2++)
            std::cout << A[z1][z2] << " ";
 
        std::cout << endl;
    }
 
    std::cout << endl;
    std::cin.get();
 
    return 0;
}
http://codepad.org/hDEKleL4
Миниатюры
Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов  
Vovanich13
1 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 91
02.04.2014, 19:03  [ТС]     Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов #3
zitxbit, спасибо, но можно сделать как-то проще???
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
02.04.2014, 19:21     Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов #4
Подождите, еще один пример на STL C++

Добавлено через 17 минут
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
#include <stdio.h>
#include <stdlib.h>
 
#include <vector>
#include <iostream>
#include <algorithm>
 
const int n = 5, m = 10;
 
template<class T>
void swapptr(T*& p1, T*& p2)
 { T* _tp = p1; p1 = p2; p2 = _tp; }
 
typedef std::vector<std::vector<int>> matrix;
 
using namespace std;
 
int RandValue() { return rand() % 9 + 1; }
 
int main(int argc, char** argv)
{
    static matrix A(n); 
    matrix::iterator row_iterator;
    for (row_iterator = A.begin(); row_iterator != A.end(); row_iterator++)
    {
        row_iterator->resize(m, 0);
        std::generate(row_iterator->begin(), row_iterator->end(), RandValue);
        for (matrix::size_type index = 0; index < m; index++)
            std::cout << row_iterator->at(index) << " ";
 
        std::cout << endl;
    }
 
    std::cout << endl << endl;
 
    for (row_iterator = A.begin(); row_iterator != A.end(); row_iterator++)
    {
        matrix::iterator max_iterator = row_iterator;
        matrix::iterator sort_iterator = max_iterator;
        while (sort_iterator != A.end())
        {
            if (sort_iterator->at(0) > max_iterator->at(0))
                max_iterator = sort_iterator;
            sort_iterator++;
        }
 
        std::iter_swap(row_iterator, max_iterator);
    }
 
    for (row_iterator = A.begin(); row_iterator != A.end(); row_iterator++)
    {
        for (matrix::size_type index = 0; index < m; index++)
            std::cout << row_iterator->at(index) << " ";
 
        std::cout << endl;
    }
 
    std::cout << endl;
    std::cin.get();
 
    return 0;
}
Проще некуда.
Vovanich13
1 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 91
02.04.2014, 19:28  [ТС]     Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов #5
zitxbit, мне нужно без библиотек:#include <vector>,
#include <algorithm>,#include <memory.h>
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
02.04.2014, 19:30     Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов #6
Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов

Добавлено через 27 секунд
Без этих библиотек никак.
Yandex
Объявления
02.04.2014, 19:30     Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов
Ответ Создать тему
Опции темы

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