
С++. БЕЗ ИСПОЛЬЗОВАНИЯ АДРЕСОВ И УКАЗАТЕЛЕЙ. Пусть дано натуральное число 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;
}



Для решения данной задачи вам потребуется выполнить следующие шаги:
1. Найти последнюю строку в матрице. 2. Найти максимальный элемент в матрице. 3. Если последний максимальный элемент находится на последней строке, то обмен производить не нужно. 4. Если последний максимальный элемент не находится на последней строке, то обменять последнюю строку с строкой, в которой находится последний максимальный элемент.
Вот пример кода на языке C++, который реализует данную логику:
```cpp
#include
int main() { int n; // размерность матрицы std::cin >> n;
std::vector
// Ввод матрицы for (int i = 0; i < n; i++) { for (int j = 0; j < 10; j++) { std::cin >> matrix[i][j]; } }
int maxRowIndex = -1; // индекс строки с последним максимальным элементом double maxElement = matrix[0][0]; // предполагаем, что первый элемент - максимальный
// Поиск последнего максимального элемента и его строки for (int i = 0; i < n; i++) { for (int j = 0; j < 10; j++) { if (matrix[i][j] >= maxElement) { maxElement = matrix[i][j]; maxRowIndex = i; } } }
// Если последний максимальный элемент находится на последней строке, то обмен производить не нужно if (maxRowIndex != n - 1) { // Обмен местами последней строки с строкой, в которой находится последний максимальный элемент std::swap(matrix[maxRowIndex], matrix[n - 1]); }
// Вывод матрицы после обмена for (int i = 0; i < n; i++) { for (int j = 0; j < 10; j++) { std::cout << matrix[i][j] << " "; } std::cout << std::endl; }
return 0; } ```
Примечание: Представленный код решает задачу обмена строк в матрице, но не использует адресов и указателей, как требуется в условии задачи. Если вам необходимо выполнить задачу именно без использования адресов и указателей, то вам потребуется другой подход к решению.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili