@gbxbro

Как решить данную задачу по курсовой на языке С++?

Всем программистам привет. У меня такая вещь, программировать я только начал учиться, до этого пинал балду на парах, сходил в армию и вернулся с академа, сейчас я всерьез взялся за учебу, но за месяц обрасти достаточными знаниями, тем более на языке с++ не выходит, а тут у нас курсовая, вот и решил обратиться к всемогущему интрнету, я не расчитываю что мне напишут готовый код с пояснениями, но думаю что кто-нибудь сможет объяснить технологию решения для данной задачи, только недавно дошел до циклов for и перехожу к массивам, знаю что такое функции и их предварительное объявление. Думаю как-нибудь получится решить ее с натяжкой, добив свои знания по массивам.
5f3006bddf888610513554.png

Мысли у меня примерно такие, завести целочисленные переменные N и M, от числа M рандомным образом сформируется массив из чисел, далее зациклить его и вывести N раз, далее через if через сравнение элементов найти наибольший и передвинуть его влево, все это нужно сделать через функции как-то между этим циклом, потому что с каждой итерацией элементы массива обновятся. Далее сравнить первые элементы и наибольший закинуть в первую итерацию как-то. Крч тупняк, помогите пожалуйста, знаний не хватает...
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
wataru
@wataru
Вам ДАНА матрица. Значит в программе надо
1) прочитать числа N и M (заведите 2 переменные и прочитайте их, через cin)
2) Завести N*M матрицу. В C++ стандартом для массивов является класс vector. Двумерный массив - это вектор векторов.
vector<vector<int>> a(n);
Это создаст вектор из n векторов, но они все будут пустые. Надо во время считывания ( у вас будет 2 вложенных цикла) перед считыванием i-ой строки i-ый вектор отресайзить вызвав a[i].resize(m). И далее можно будет читать a[i][j]
3) Теперь, собственно, алгоритм. Найдите наибольший элемент. Для этого заведите 3 переменные - текущий максимум (можно инициализировать a[0][0]) и его координаты mx и my (инициализируйте нулями). Пройдитесь по матрице двумя вложенными циклами и, если текущий элемент больше максимума - перезапишите максимум и запомните текущие переменные циклов в mx и my.
4) Теперь поменяйте местами 0-ую строку со строкой в которой максимум. Для этого одним циклом пройдитесь по столбцам (от 0 до M-1) и поменяйте местами a[0][j] и a[mx][j].
5) Теперь то же самое, но по столбцам. Цикл от 0 до N-1 и меняйте элементы a[i][0] и a[i][my].
6) В конце выведите матрицу двумя вложенными циклами.

Для смены двух значений нужна временная перменная, например tmp.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы