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

Переместить максимальный элемент матрицы влево вверх

18.01.2021, 23:08. Показов 1107. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие задачки : Матрицу задано пользователем с клавиатуры вместе с количеством ее строчек N и столбцов M. Необходимо найти элемент матрицы, который имеет макс. значение. Переставляя строчки и столбцы местами необходимым образом, переместить макс. элемент влево вверх на заданную пользователем индексами позицию.

Получилось все кроме перемещения макс. элемента...

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
#include <iostream>
using namespace std;
int main () {
    int n,m;
    cout << "Enter n and m: " << endl;
    cin >> n >> m;
    int a[n][m];
    cout << "Enter the array: " << endl;
        for (int i = 0; i < n; i++) 
            for (int j = 0; j < m; j++) 
            cin >> a[i][j];
            cout << "Your array: " << endl; 
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
        cout << a[i][j] << ' ';
        cout << endl;
    }   
    int max = 0;
        for (int i = 0; i < n; i++) 
            for (int j = 0; j < m; j++)
                if (a[i][j] > max)
                    max = a[i][j];
                    cout << endl << "Max element: " << max; 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2021, 23:08
Ответы с готовыми решениями:

Задать матрицу с клавиатуры , найти макс элемент и переместить его вверх влево
Матрицу задано пользователем с клавиатуры вместе с кол-вом ее строчек N и столбцов M. Необходимо найти максимальный по значению элемент...

Переместить максимум матрицы влево вверх на заданную позицию, переставляя строки и столбцы соответсвенно
Помогите пожалуйста вот есть заданная матрица, надо найти больший елемент. надо переместить больший елемент влево вверх на заданую...

Перестановкой строк и столбцов матрицы переместить максимальный элемент в верхний левый угол
Переставляя строки и столбцы матрицы добиться того, чтобы наибольший элемент (один из них) оказался в верхнем левом углу. При задании...

8
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
19.01.2021, 03:31
Цитата Сообщение от vitaliy2 Посмотреть сообщение
cin >> n >> m;
    int a[n][m];
такая запись не по стандарту С++. размер статического массива должен быть известен на стадии компиляции. при вводе размера с клавиатуры применяйте динамический массив
C++
1
int *a = new int[n];
Цитата Сообщение от vitaliy2 Посмотреть сообщение
Получилось все кроме перемещения макс. элемента...
продолжайте. запомните индексы максимального:
C++
1
if (a[i][j]>max) {max=a[i][j];imax=i;jmax=j;}
Цитата Сообщение от vitaliy2 Посмотреть сообщение
влево вверх
если такое условие, строки и столбцы нужно менять последовательно
0
Модератор
 Аватар для long399
2882 / 1836 / 933
Регистрация: 16.10.2013
Сообщений: 5,240
Записей в блоге: 15
19.01.2021, 05:35
vitaliy2, лучше всего написать функции, которые меняют местами 2 строки и 2 столбца матрицы. Когда максимальный элемент (его индексы, как вам подсказал Yetty) найден, тогда вы просто несколько раз вызываете эти функции и получаете верное решение.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
19.01.2021, 05:45
Цитата Сообщение от long399 Посмотреть сообщение
лучше всего написать функции, которые меняют местами 2 строки и 2 столбца
long399, как переходить через первую стоку(столбец) если заданный элемент правее и ниже ?
0
Модератор
 Аватар для long399
2882 / 1836 / 933
Регистрация: 16.10.2013
Сообщений: 5,240
Записей в блоге: 15
19.01.2021, 06:03
Цитата Сообщение от Yetty Посмотреть сообщение
как переходить через первую стоку(столбец) если заданный элемент правее и ниже ?
не совсем понял суть вопроса... Можно с примером ?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
19.01.2021, 06:09
long399, если заданный элемент находится правее и ниже максимального, а по условию нужно перемещаться
Цитата Сообщение от vitaliy2 Посмотреть сообщение
влево вверх
после подъёма в самый верх, нужно будет менять первую строку с последней и продолжать обмены, вот я и спрашиваю раз Вы пишите вариант решения как это осуществить
0
Модератор
 Аватар для long399
2882 / 1836 / 933
Регистрация: 16.10.2013
Сообщений: 5,240
Записей в блоге: 15
19.01.2021, 06:23
Yetty, сейчас условие перечитал еще раз, я сначала не так его понял. Я подумал надо максимальный элемент переместить в ячейку [0][0].

Цитата Сообщение от Yetty Посмотреть сообщение
после подъёма в самый верх, нужно будет менять первую строку с последней и продолжать обмены
да, так и есть. придется выполнять проверку текущей нашей позиции и учитывать что мы можем быть уже на границах. Тогда обмен будет следующим. Для строки: не текущая строка с верхней строкой, а текущая строка с самой нижней строкой. Для столбца: не текущий столбец с левым столбом, а текущий столбец с самым правым столбцом.
0
0 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 29
20.01.2021, 15:22  [ТС]
Если честно , то не понимаю как реализовать то , что вы написали в коде. Т.к. я совсем еще новичок. Мог бы я вас попросить написать код к этому ?
Цитата Сообщение от vitaliy2 Посмотреть сообщение
Переставляя строчки и столбцы местами необходимым образом, переместить макс. элемент влево вверх на заданную пользователем индексами позицию
Цитата Сообщение от Yetty Посмотреть сообщение
такая запись не по стандарту С++. размер статического массива должен быть известен на стадии компиляции. при вводе размера с клавиатуры применяйте динамический массив
Спасибо ! прочитал про дин.массив и исправил код :
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
#include <iostream>
using namespace std;
int main () {
    int n,m;
    cout << "Enter n and m: " << endl;
    cin >> n >> m;
    
    int** a = new int*[n];
    
    for (int i = 0; i < n; i++)
    {
        a[i] = new int[m];
    }
    
    cout << "Enter the array: " << endl;
        for (int i = 0; i < n; i++) 
            for (int j = 0; j < m; j++) 
            cin >> a[i][j];
            cout << "Your array: " << endl; 
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
        cout << a[i][j] << ' ';
        cout << endl;
    }   
    int max = 0;
        for (int i = 0; i < n; i++) 
            for (int j = 0; j < m; j++)
                if (a[i][j] > max)
                    max = a[i][j];
                    cout << endl << "Max element: " << max; 
    for (int i = 0; i < n; i++)
    {
        delete[] a[i];
    }
    delete[] a;
}
Все ли верно? вроде как работает...

Добавлено через 1 минуту
Цитата Сообщение от vitaliy2 Посмотреть сообщение
Мог бы я вас попросить написать код к этому ?
Может разберусь смотря на код... (?)
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.01.2021, 15:58
Цитата Сообщение от vitaliy2 Посмотреть сообщение
Все ли верно?
если переменную max инициализируете значением a[0][0] и допишите последней строкой return 0; (функция типа int, в том числе и main() должна что-то возвращать) будет верно

значение max можно находить в цикле заполнения - в таком случае инициализируйте переменную max минимальным значением типа:
C++
1
int max=INT_MIN;
массив если ввод идёт с клавиатуры можно специально не выводить

прочитайте ещё раз сообщение #2 и примените это в коде
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2021, 15:58
Помогаю со студенческими работами здесь

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

Максимальный элемент матрицы заменить на нуль и вывести на печать угол матрицы, в котором расположен этот максимальный элемент
Помогите, пожалуйста, добить программу: -Максимальный элемент матрицы заменить на нуль и вывести на печать угол матрицы, в котором...

Нарисовать прямоугольник и при нажатии клавиш необходимо переместить влево, вправо, вверх или вниз
Найдите,пожалуйста, ошибки в данном коде: //--------------------------------------------------------------------------- #include...

Переместить максимальный элемент матрицы (массива)
Есть код .686; Директива определения типа микропроцессора .Model flat, stdcall; задачи линейной модели памяти ; И соглашения ОС...

Определить, необходимо ли переместить фигуру вверх, вниз, вправо, влево в зависимости от введенного символа
Создать консольное приложение Ввести с клавиатуры символ. Определить, необходимо ли нам переместить фигуру вверх, вниз, вправо, влево...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru