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

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

09.12.2011, 03:49. Показов 1538. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru