Задача по курсовой на языке С++

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

введите сюда описание изображения

Мысли у меня примерно такие, завести целочисленные переменные N и M, от числа M рандомным образом сформируется массив из чисел, далее зациклить его и вывести N раз, далее через if через сравнение элементов найти наибольший и передвинуть его влево, все это нужно сделать через функции как-то между этим циклом, потому что с каждой итерацией элементы массива обновятся. Далее сравнить первые элементы и наибольший закинуть в первую итерацию как-то. Крч тупняк, помогите пожалуйста, знаний не хватает...


Ответы (1 шт):

Автор решения: Egorithm

Создаём массив динамически (в учебных целях - двумерный):

double **matrix = new double*[rows];
for (int row = 0; row < rows; ++row)
    matrix[row] = new double[cols];

Дальше, ты его заполняешь как тебе угодно, например:

// от 1000 до 9999
std::srand(std::time(nullptr));
for (int row = 0; row < rows; ++row)
    for (int col = 0; col < cols; ++col)
        matrix[row][col] = (double)std::rand() / RAND_MAX * 8999.0 + 1000.0;

Затем находим наибольший элемент:

int maxrow = 0;
int maxcol = 0;
double max = matrix[maxrow][maxcol];
for (int row = 0; row < rows; ++row)
    for (int col = 0; col < cols; ++col)
        if (max < matrix[row][col])
        {
            max = matrix[row][col];
            maxrow = row;
            maxcol = col;
        }

Дальше меняем строки:

if (maxrow != 0)
{
    for (int col = 0; col < cols; ++col)
    {
        double temprow = matrix[0][col];
        matrix[0][col] = matrix[maxrow][col];
        matrix[maxrow][col] = temprow;
    }
}

И столбцы:

if (maxcol != 0)
{
    for (int row = 0; row < rows; ++row)
    {
        double tempcol = matrix[row][0];
        matrix[row][0] = matrix[row][maxcol];
        matrix[row][maxcol] = tempcol;
    }
}

Не забываем очистить выделенную память (в обратном порядке):

for (int row = 0; row < rows; ++row)
    delete[] matrix[row];
delete[] matrix;
matrix = nullptr;
→ Ссылка