C/C++

С++. БЕЗ ИСПОЛЬЗОВАНИЯ АДРЕСОВ И УКАЗАТЕЛЕЙ. Пусть дано натуральное число n и вещественная матрица размером n x 10.

Пусть дано натуральное число n и вещественная матрица размером n x 10.
Обменяйте местами строку, в которой находится ПОСЛЕДНИЙ максимальный элемент (в матрице может быть несколько максимальных элементов) с последней строкой.

В программе обязательно рассмотрите случай, когда последний максимальный элемент находится на последней строке, тогда обмен производить не нужно.
#include <iostream>
#include <iomanip>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
using namespace std;
size_t max_elemenet(double* row, const size_t n) {
auto max = 0U;
for (auto i = 1U; i < n; ++i) {
if (row[i] >= row[max]) {
max = i;
}
}
return max;
}
size_t length(const char* msg) {
cout << msg;
size_t value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int main() {
srand(unsigned(time(nullptr)));
cout.setf(ios::fixed);
cout.precision(1U);
const auto w = 5U;
auto n = length(" Rows: ");
auto m = 10U;
puts("");
auto matrix = new double* [n];
for (auto i = 0U; i < n; ++i) {
matrix[i] = new double[m];
for (auto j = 0U; j < m; ++j) {
matrix[i][j] = RAND(10, 100) / 10.0;
cout << setw(w) << matrix[i][j];
}
puts("");
}
puts("");
auto max = new double[n];
for (auto i = 0U; i < n; ++i) {
auto index = max_elemenet(matrix[i], m);
max[i] = matrix[i][index];
}
for (auto i = 0U; i < n; ++i) {
cout << setw(w) << max[i];
}
puts("\n");
auto target = max_elemenet(max, n);
if (target != n - 1) {
for (auto i = 0U; i < m; ++i) {
swap(matrix[target][i], matrix[n - 1][i]);
}
}
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < m; ++j) {
cout << setw(w) << matrix[i][j];
}
puts("");
}
delete[] max;
for (auto i = 0U; i < n; ++i) {
delete[] matrix[i];
}
delete[] matrix;
system("pause > nul");
}

P.S. Ввиду того, что количество строк становится известно, только во время выполнения программы, требует память под строки массива выделять в куче. А здесь без указателей никак. Как, впрочем, не обойтись без них при передаче массива в функцию.
Андрей Салин
Андрей Салин
81 244
Лучший ответ
Сергей Кустов Здравствуйте, а можно как-то без функций сделать и более понятно для новичка
Без указателей и адресов это вектор
Василий Ершов
Василий Ершов
21 700