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

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

Войти
Регистрация
Восстановить пароль
 
JOKER DIMA
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 4
#1

В матрице отсортировать строки по возрастанию минимального элемента строки - C++

09.12.2011, 03:49. Просмотров 584. Ответов 2
Метки нет (Все метки)

В матрице M x N переставить строки таким образом, чтобы получилась последовательность q1>=q2>=…>=qm, где qi – минимальное значение среди всех элементов i – ой строки.
Программа должна выполнять ввод и вывод матрицы и дополнительных данных, выполнять необходимые действия и выводить результаты.

Добавлено через 2 часа 46 минут
Разработка и отладка алгоритмов и программ с использованием указателей
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2011, 03:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В матрице отсортировать строки по возрастанию минимального элемента строки (C++):

Отсортировать строки в двумерном массиве по возрастанию минимального элемента - C++
Отсортировать строки в двумерном массиве по возрастанию минимального элемента. Как-то не особо получилось. Помогите понять в чем ошибка. ...

Найти среднее арифметическое каждой строки матрицы и отсортировать строки по возрастанию - C++
Дана квадратная матрица. Найти среднее арифметическое каждой строки и отсортировать строки по возрастанию этих характеристик

Отсортировать элементы массива по возрастанию если номер минимального элемента меньше заданного - C++
Не смог справится с данными заданиями, может кто объяснит и приведет пример, буду очень благодарен вам граждане. Задача: Задать...

От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки - C++
От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки.

Отсортировать строки матрицы по возрастанию - C++
По заданию нужно отсортировать массив X (100) методом вычисления адреса...с адресом преподаватель помог...я разбил массив на 10...

Отсортировать строки матрицы по возрастанию - C++
Заполнить двумерную матрицу случайными целыми числами в диапозоне от 0 до 99.Отсортировать строки полученной матрицы по...

2
CEBEP
106 / 106 / 9
Регистрация: 21.03.2010
Сообщений: 440
09.12.2011, 06:25 #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
#include <iostream>
#include <vector>
#include <ctime>
#include <algorithm>
#include <functional>
 
typedef std::vector<double> Row;
typedef std::vector<Row> Matrix;
 
struct min
{
    bool operator () (const Row& op1, const Row& op2) const
    {
        return *std::min_element( op1.begin(), op1.end() ) > *std::min_element( op2.begin(), op2.end() );
    }
};
 
std::ostream& operator << (std::ostream& out, const Row& r)
{
    for (Row::const_iterator it =  r.begin(), end = r.end(); it != end; ++it)
    {
        out << *it << ' ';
    }
    return out;
}
std::ostream& operator << (std::ostream& out, const Matrix& m)
{
    for (Matrix::const_iterator it = m.begin(), end = m.end(); it != end; ++it)
    {
        out << *it << std::endl;
    }
    return out;
}
 
void generate ( Matrix& m, Matrix::size_type M, Matrix::size_type N )
{
    srand( static_cast<unsigned> ( time(0) ) );
    m.resize( N );
    for (Matrix::iterator it = m.begin(), end = m.end(); it  != end; ++it)
    {
        it->reserve( N );
        for (Matrix::size_type i = N; i; --i)
        {
            it->push_back( static_cast<double> ( rand() ) / 32767 * 10 * ( rand() % 2 ? -1 : 1 ) );
        }
    }
}
 
void main ()
{
    Matrix m;
 
    generate(m, 5, 5);
 
    std::cout << m << "=============================" << std::endl;
 
    std::sort(m.begin(), m.end(), min() );
 
    std::cout << m;
}
Добавлено через 1 час 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <stdio.h>
 
#define M 5
#define N 5
 
void printMatrix(double m[M][N], unsigned width, unsigned height)
{
    for (int i = 0; i != height; ++i)
    {
        for (int j = 0; j != width; ++j)
        {
            printf("%lf ", m[i][j]);
        }
        printf("\n");
    }
}
 
double min(double r[N], unsigned size)
{
    double minimum = *r;
    for (unsigned i = 1; i != size; ++i)
        minimum = r[i] < minimum ? r[i] : minimum;
    return minimum;
}
 
void swapRows(double r1[N], double r2[], unsigned w)
{
    double cnt;
    for ( int i = 0; i != w; ++i)
    {
        cnt = r1[i];
        r1[i] = r2[i];
        r2[i] = cnt;
    }
}
 
unsigned maxRow(double m[M][N], unsigned height, unsigned width)
{
    unsigned max = 0;
    for (int i = 1; i != height; ++i)
    {
        max = min( m[i], width ) > min( m[max], width ) ? i : max;
    }
    return max;
}
 
void sort(double m[M][N], unsigned height, unsigned width)
{
    int i = 0;
    while ( height - i > 1 )//Пока в неотсортированной части осталось больше одного элемента
    {
        unsigned max = maxRow(m + i, height - i, width) + i;//Получаем указатель на максимальный элемент
        printf("stroka s naibolshim minimalnim elementom: %d (minimum: %lf)\n", max + 1, min(m[max], width));
        if( i != max )
        {
            swapRows(m[i], m[max], width);//Меняем его с первым
            printf("stroki %d i %d pomeneni mestami.\n", i + 1, max + 1);
        }
 
        ++i;//Двигаемся дальше
    }
}
void generate(double matrix[M][N], unsigned height, unsigned width)
{
    for (int i = 0; i != height; ++i)
    {
        for ( int j = 0; j != width; ++j)
        {
            printf("Vvedite element [%d][%d]: ", i + 1, j + 1);
            scanf("%lf", matrix[i] + j);
        }
    }
}
 
void main ()
{
    double matrix[M][N];
 
    generate(matrix, M, N);
    printf("sgenerirovana matrica\n");
    printMatrix(matrix, M, N);
    sort(matrix, M, N);
    printf("rezultat preobrazovani:\n");
    printMatrix(matrix, M, N);
}
Добавлено через 57 секунд
но второй вариант, конечно, для наркоманов...
1
zarko97
277 / 37 / 0
Регистрация: 11.10.2015
Сообщений: 393
17.04.2017, 01:09 #3
C++
1
2
3
4
5
std::multiset<std::vector<int>, std::function<bool(std::vector const&, std::vector const&)>> Matrix( Matr.begin, Matr.end, []
                                            ( std::vector const& lhsVec, std::vector const& rhsVec ) 
                                            {
                                                 return  *std::min_element( lhsVec.begin(), lhsVec.end() ) > *std::min_element( rhsVec.begin(), rhsVec.end() );  
                                            } );
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2017, 01:09
Привет! Вот еще темы с ответами:

Отсортировать строки матрицы по возрастанию их суммы - C++
Нужно создать двумерный массив, размером 10 х 10. Заполнить его случайно целыми числами, в районе до 10. Вывести получившийся массив на...

Отсортировать строки матрицы по возрастанию их максимальных элементов - C++
Нужно отсортировать строки матрицы по возрастанию их максимальных элементов..программу написал, все работает. Но теперь нужно реализовать...

Отсортировать строки матрицы по возрастанию сортировкой подсчетом - C++
В файле содержится двумерный массив размерностью n на n. В новый файл вывести отсортированный массив. Отсортировать строки по возрастанию...

Отсортировать строки по возрастанию суммы цифр чисел в строках - C++
отсортировать строки по возрастанию суммы цифр чисел в строках


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

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

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