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

Поменять max и min элемент в матрице

17.03.2016, 22:02. Показов 2377. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, помогите, не могу додуматься, как это делается...
Нам дана матрица, допустим 3x3 или NxM, как сделать сравнивать все элементы матрицы между собой, а потом ещё и поменять их местами это? Просветите меня пожалуйста) А то матрицу задать могу, а дальше ручник прожимается
Самое забавное, это то, что я буквально неделю назад думал что разобрался с этими чертовыми массивами...Ага, щас
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2016, 22:02
Ответы с готовыми решениями:

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

Поменять местами max и min четных строк в квадратной матрице
Дана квадратная матрица. Размерность вводится. Поменять местами max и min четных строк. #include <iostream> #include...

В списке целых чисел поменять местами max элемент и min элемент
Помогите написать эту программу на С++.

10
0 / 0 / 1
Регистрация: 13.03.2016
Сообщений: 6
17.03.2016, 22:33
Нужно просто пройти массив, найти макс и мин элемент и запомнить их индексы. А потом поменять их.

Для одномерного массива так
C++
1
2
3
4
minIndex=0;
for (int i=o; i<size-1;i++)
if( array[minIndex]>array[minIndex+1])
minIndex = i;
Для многомерного все тоже, просто больше циклов и переменных. Можно искать макс и мин за один проход, для этого заведите maxIndex и еще одно условие.
0
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
17.03.2016, 23:07
Ты хочешь функцию, которая находит минимальный и максимальные элементы массива и меняет их местами, верно? Вот (без динамических массивов):
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
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <limits>
#define NOMINMAX
#include <windows.h>
#include <ctime>
#include <random>
 
const int N = 5, M = 5; // размеры матрицы
 
void findAndReplaceMaxMin(int matrix[][M]); // функция, решающая твою задачу
 
int main() {
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::default_random_engine randomEng(time(NULL));
    std::uniform_real_distribution<double> randomNum(-50, 50); // я тут поставил ограничитель генерации случайных чисел, он от -50 до 50, поменяй, если хочешь
 
    // создлаем матрицу
    int matrix[N][M];
 
    // заполняем и печатаем
    std::cout << "Ваша матрица:\n\n";
    for (int i = 0; i < N; i++) {
        std::cout << "| ";
        for (int j = 0; j < M; j++) {
            matrix[i][j] = randomNum(randomEng);
            std::cout << std::setw(3) << matrix[i][j] << " | ";
        }
        std::cout << "\n";
    }
 
    // находим мин. и макс. и меняем местами
    findAndReplaceMaxMin(matrix);
 
    // печатаем измененную матрицу
    std::cout << "\n\nОтвет:\n\n";
    for (int i = 0; i < N; i++) {
        std::cout << "| ";
        for (int j = 0; j < M; j++) {
            std::cout << std::setw(3) << matrix[i][j] << " | ";
        }
        std::cout << "\n";
    }
 
    _getch();
}
 
void findAndReplaceMaxMin(int mas[][M]) {
    int min = std::numeric_limits<int>::max();
    int max = std::numeric_limits<int>::min();
 
    int MAXindexN, MAXindexM, MINindexN, MINindexM;
    // находим минимальный и максимальный
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            if (mas[i][j] > max) {
                max = mas[i][j];
                MAXindexN = i;
                MAXindexM = j;
            }
            if (mas[i][j] < min) {
                min = mas[i][j];
                MINindexN = i;
                MINindexM = j;
            }
        }
    }
 
    std::cout << "\nМинимальный элемент: " << min
        << "( строка: " << MINindexN+1 << "; столб: " << MINindexM+1;
    std::cout << "\nМаксимальный элемент: " << max
        << "( строка: " << MAXindexN+1 << "; столб: " << MAXindexM+1;
 
    //меняем местами
    int temp_max = max;
    mas[MAXindexN][MAXindexM] = min;
    mas[MINindexN][MINindexM] = temp_max;
}
Добавлено через 11 минут
могу провернуть подобную фигню с динамическим массивом, только я спать жутко хочу XD
0
28 / 20 / 97
Регистрация: 22.10.2015
Сообщений: 304
18.03.2016, 03:49
Distincy, неправильно
0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 70
18.03.2016, 06:20  [ТС]
Не не не, слишком сложно...Просто через циклы...Просто я сам искал, я находил ответы, но у меня возникали вопросы, которые не позволяли пройти дальше...Например: "Что такое maxIndex?" Это просто обычная переменная, которую так назвали, чтобы было понятнее, типа mas, fact, func...? Или что-то другое?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
18.03.2016, 07:33
C++
1
2
int matrix[N][M] = ...
std::iter_swap(std::min_element(matrix, matrix + N * M), std::max_element(matrix, matrix + N * M));
3
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 70
18.03.2016, 07:49  [ТС]
Т.е это функция? Или что? Я так и не понял(
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
18.03.2016, 08:07
Цитата Сообщение от _lTaNaToSl_ Посмотреть сообщение
Т.е это функция? Или что? Я так и не понял(
Вот вся программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
 
int main()
{
    const int N = 3;
    const int M = 3;
    int matrix[N][M] = { 0 };
 
    srand(time(nullptr));
    std::generate((int*)matrix, (int*)matrix + N * M, rand);
 
    std::copy((int*)matrix, (int*)matrix + N * M, std::ostream_iterator<int>(std::cout << "Original matrix: ", " "));
 
    std::iter_swap(std::min_element((int*)matrix, (int*)matrix + N * M), std::max_element((int*)matrix, (int*)matrix + N * M));
 
    std::copy((int*)matrix, (int*)matrix + N * M, std::ostream_iterator<int>(std::cout << std::endl << "Matrix after swapping: ", " "));
}
1
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,647
Записей в блоге: 6
18.03.2016, 09:55
Kastaneda, я бы использовал алгоритм minmax_element
0
18.03.2016, 10:22

Не по теме:

Ilot, тогда в одну строчку записать не получится :)

0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 70
18.03.2016, 11:04  [ТС]
Ребят, я конечно понимаю, что вы эксперты и всё такое, но мне надо не в 1 строчку, а так, чтобы я понял)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2016, 11:04
Помогаю со студенческими работами здесь

Поменять местами min и max элемент в массиве
1) Найти значение min элемента n строки и m столбца в которой он расположен. 2) Поменять местами min и max элемент в массиве. 3) Найти...

Поменять местами max и min в матрице
Здравствуйте. Задача состоит в том, что есть матрица nxn, нужно найти максимальный и минимальный элемент, затем переставить столбцы и...

поменять min и max елементы местами в матрице
Добрый вечер. Нужно найти наибольший и наименьший элементы матрицы и поменять их местами. Спасибо Добавлено через 22 часа 33 минуты ...

Поменять местами в матрице строки, содержащие MIN и MAX элементы
В данной действительной матрице размера m x n поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей...

Поменять местами min и max элементы в матрице на диагоналях, параллельных главной
Собственно, не могу сделать указанное требование для диагоналей ниже главной. Главная диагональ тоже попадает под это требование. В...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru