С++. БЕЗ ИСПОЛЬЗОВАНИЯ АДРЕСОВ И УКАЗАТЕЛЕЙ. Пусть дано натуральное число n и вещественная матрица размером n x 10.
Обменяйте местами строку, в которой находится ПОСЛЕДНИЙ максимальный элемент (в матрице может быть несколько максимальных элементов) с последней строкой.
В программе обязательно рассмотрите случай, когда последний максимальный элемент находится на последней строке, тогда обмен производить не нужно.
#include <iostream>
#include <ctime>
using namespace std;
int main() {
const int n = 4;
float arr[n][10];
cout << "Исходный массив: " << endl;
srand(time(NULL));
for (int i = 0; i < n; i++){
for (int j = 0; j < 10; j++){
float minValue = -10.f;
float maxValue = 10.f;
arr[i][j] = (float)rand()/(float) RAND_MAX * (maxValue - minValue) + minValue;
cout << arr[i][j] << " ";
}
cout << endl;
}
int maxIndex = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < 10; j++)
if (arr[i][j] >= arr[maxIndex/10][maxIndex%10])
maxIndex = i * 10 + j;
cout << "Max: " << "arr["<<maxIndex/10<<"]["<<maxIndex%10<<"] = "
<< arr[maxIndex/10][maxIndex%10] << endl;
int row = maxIndex/10;
if (row < n - 1){
cout << "Меняем " << row + 1 << " и " << n << " строки местами: " << endl;
for (int j = 0; j < 10; j++){
float temp = arr[n-1][j];
arr[n-1][j] = arr[row][j];
arr[row][j] = temp;
}
for (int i = 0; i < n; i++){
for (int j = 0; j < 10; j++)
cout << arr[i][j] << " ";
cout << endl;
}
} else {
cout << "Максимальный элемент находится на последней строке." << endl;
}
return 0;
}