Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 4

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

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

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

Добавлено через 2 часа 46 минут
Разработка и отладка алгоритмов и программ с использованием указателей
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2011, 03:49
Ответы с готовыми решениями:

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

Отсортировать массив по возрастанию после минимального элемента
Моё задание отсортировать массив по возрастанию после минимального элемента. То есть сначала нужно найти минимальный элемент и только потом...

Отсортировать столбцы матрицы по возрастанию минимального элемента
Дана прямоугольная матрица. Найти минимальный элемент в каждом столбце и отсортировать столбцы по возрастанию этих характеристик. ...

2
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
09.12.2011, 06:25
Лучший ответ Сообщение было отмечено JOKER DIMA как решение

Решение

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
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
17.04.2017, 01:09
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2017, 01:09
Помогаю со студенческими работами здесь

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

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

Отсортировать элементы в массиве по возрастанию, а также найти сумму минимального и максимального элемента
4. Заполнить одномерный массив из 10 элементов случайными элементами от 0 до 100. Отсортировать элементы в массиве по возрастанию, а также...

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

Отсортировать строки по возрастанию
Условие таково: задано текст и нужно создать массив указателей на отдельные абзацы. Сортировать их по длинам. Вывести рассортированы...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru