Задача по курсовой на языке С++
Программировать я только начал учиться, до этого пинал балду на парах, сходил в армию и вернулся с академа, сейчас я всерьез взялся за учебу, но за месяц обрасти достаточными знаниями, тем более на языке с++ не выходит, а тут у нас курсовая, вот и решил обратиться к всемогущему интрнету, я не расчитываю что мне напишут готовый код с пояснениями, но думаю что кто-нибудь сможет объяснить технологию решения для данной задачи, только недавно дошел до циклов for и перехожу к массивам, знаю что такое функции и их предварительное объявление. Думаю как-нибудь получится решить ее с натяжкой, добив свои знания по массивам.
Мысли у меня примерно такие, завести целочисленные переменные N и M, от числа M рандомным образом сформируется массив из чисел, далее зациклить его и вывести N раз, далее через if через сравнение элементов найти наибольший и передвинуть его влево, все это нужно сделать через функции как-то между этим циклом, потому что с каждой итерацией элементы массива обновятся. Далее сравнить первые элементы и наибольший закинуть в первую итерацию как-то. Крч тупняк, помогите пожалуйста, знаний не хватает...
Ответы (1 шт):
Создаём массив динамически (в учебных целях - двумерный):
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;
