@gbxbro

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

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

Мысли у меня примерно такие, завести целочисленные переменные N и M, от числа M рандомным образом сформируется массив из чисел, далее зациклить его и вывести N раз, далее через if через сравнение элементов найти наибольший и передвинуть его влево, все это нужно сделать через функции как-то между этим циклом, потому что с каждой итерацией элементы массива обновятся. Далее сравнить первые элементы и наибольший закинуть в первую итерацию как-то. Крч тупняк, помогите пожалуйста, знаний не хватает...
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Вам ДАНА матрица. Значит в программе надо
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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы