С++. БЕЗ ИСПОЛЬЗОВАНИЯ АДРЕСОВ И УКАЗАТЕЛЕЙ. Пусть дано натуральное число n и вещественная матрица размером n x 10.
Обменяйте местами строку, в которой находится ПОСЛЕДНИЙ максимальный элемент (в матрице может быть несколько максимальных элементов) с последней строкой.

В программе обязательно рассмотрите случай, когда последний максимальный элемент находится на последней строке, тогда обмен производить не нужно.

LJкрасотка2007 LJкрасотка2007    1   07.12.2021 15:40    0

Ответы
vigura2 vigura2  24.01.2022 04:23

#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;

}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика