С++, матрица, задача

172
22 апреля 2022, 03:40

Помогите, пожалуйста, создать программу на базе с++. Разбираюсь второй день - уже голова от этих матриц болит. Вот суть задачи: Дана матрица (N+15)x(N+15), найти строки с максимальным и минимальным элементом и поменять их местами, если строки совпадают, обнулить их. Числа генерировать случайно в интервале [-N-15; N+15]

Заранее благодарю за код или мысли которые натолкнут на создание. :)

Answer 1

В функции main делаешь ввод числа N (или он у тебя статический не знаю), потом инициализируешь матрицу и устанавливаешь значения элементов случайными числами.

Вот пример генерации случайного числа на промежутке [a, b]: rand() % (b - a + 1) + a

и потом вызываешь функцию решения задачи.

В самой же функции создаешь 2 переменные отвечающие за минимальный элемент и присваиваешь ему максимальное значение в твоем случае это N + 15, и переменную отвечающую за максимальный элемент ему присваиваешь минимальное значение это N - 15. Так же две переменные в которых будешь хранить индексы строк, где ты нашел максимальный или минимальный элемент.

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

Дальше пишешь еще один цикл в котором, ты сравниваешь элементы тех строк, индексы которых ты сохранил. И если эти строки совпадают, то ты их обнуляешь.

Можешь сделать функцию, которая будет принимать указатель на массив и обнулять его элементы. И перед тем как проверить 2 строки на полное совпадение, проверить равняются ли вычисленные индексы друг другу, если ровняются, то вызываешь функцию обнуления. И так же вызываешь эту функцию, если две строчки совпадают. И тебе не придется, если в одной строчке и минимальный, и максимальный элемент, сравнивать её саму с собой.

И потом проверяешь если у тебя строки не совпадали, то делаешь цикл в котором ты swap`аешь элементы этих строк.

Если честно мне проще было код написать, а не объяснение, да и тебе проще было самому написать код, а не врать про то, что ты сломал голову уже. Если бы ты разбирался 2 дня, то ты бы хотя бы свои идеи написал, а не просто условие задачи.

READ ALSO
C++. Простая задача

C++. Простая задача

Задача: Составить алгоритм увеличения всех трех, введённых с клавиатуры, переменных на 5,если среди них есть хотя бы две равныеВ противном...

124
Небольшая проблема с выравниванием чисел по правому краю. C++

Небольшая проблема с выравниванием чисел по правому краю. C++

У меня есть последовательность чисел, которая разбивается на строкиКол-во строк зависит от кол-ва чисел(выбирается рандомно в диапазоне...

122
Как реализовать циклический сдвиг слова в C++

Как реализовать циклический сдвиг слова в C++

Допустим имеется слово "элемент"(слово может быть любым), нужно циклически сдвинуть слово вправо на "n" символовНапример, на 3 символа...

88
Зачем в коде нужна строчка? C++

Зачем в коде нужна строчка? C++

Есть вот такой кодНемного непонятно, что делает второй цикл while

109