Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Vovanich13
1 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 91
1

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

02.04.2014, 18:25. Просмотров 398. Ответов 5
Метки нет (Все метки)

Данная действительно матрица размером n * m. Сортировать (переставить) строки матрицы в порядке убывания значений первых элементов строк
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 18:25
Ответы с готовыми решениями:

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

Задан массив чисел B (M). Упорядочить K первых элементов (K <M) в порядке убывания их значений
Задан массив чисел B (M). Упорядочить K первых элементов (K &lt;M) в порядке...

Дана действительная матрица размера 3*3. Найти сумму наибольших значений строки
Дана действительная матрица размера 3*3. Найти сумму наибольших значений...

Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в зашт
Дана действительная квадратная матрица порядка n. Найти наибольшее из значений...

Дана действительная квадратная матрица порядка n. Найти наибольшее их значений элементов, расположенных в заштрихованной части матрицы

5
zitxbit
90 / 742 / 279
Регистрация: 11.04.2012
Сообщений: 971
02.04.2014, 18:37 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
1
Миниатюры
Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов  
Vovanich13
1 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 91
02.04.2014, 19:03  [ТС] 3
zitxbit, спасибо, но можно сделать как-то проще???
0
zitxbit
90 / 742 / 279
Регистрация: 11.04.2012
Сообщений: 971
02.04.2014, 19:21 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;
}
Проще некуда.
1
Vovanich13
1 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 91
02.04.2014, 19:28  [ТС] 5
zitxbit, мне нужно без библиотек:#include <vector>,
#include <algorithm>,#include <memory.h>
0
zitxbit
90 / 742 / 279
Регистрация: 11.04.2012
Сообщений: 971
02.04.2014, 19:30 6
Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов

Добавлено через 27 секунд
Без этих библиотек никак.
0
02.04.2014, 19:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2014, 19:30

Переставить строки в порядке убывания сумм элементов
здравствуйте! помогите пожалуйста решить задачу! очень нужно! Дана...

Дана действительная матрица размера NxM .Упорядочить её строки по убыванию абсолютных величин её элементов
Дана действительная матрица размера NxM .Упорядочить её строки по убыванию...

Упорядочить строки матриц в порядке убывания наибольших элементов строк
вот такую задачку задали. В С++ Упорядочить строки матриц в порядке убывания...


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

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

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