Нахождение максимального элемента, который находится справа от столбца 'k' - PullRequest
0 голосов
/ 23 октября 2019

У меня есть задача, в которой меня просят найти элемент max, который находится справа от столбца 'k' (как я понимаю, мне нужно найти максимум в столбце k + 1). Я явно делаю что-то не так, потому что когда я запускаю код, максимальное значение равно 0. Должна быть ошибка, которую я пропускаю, поэтому любая помощь будет оценена. Это мой код:

#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;

int main() {
 int n,m,k;
 int max=-1000001;
 int  a[10][10];
 cin>>n>>k;
 m=n;
  for (int i=0;i<n;i++) {
   for (int j=0;j<m;j++) {
     cin>>a[i][j];
   }
 }
 for(int i=0;i<n;i++)
{
       for (int j=0;j<m+1;j++)
       {
        if(a[i][j]>max && a[i][j]!=max && j==k+1)
        max=a[i][j];
       } 
}
  if (k>=m)
     cout<<"No";
  else
     cout<<max;    
}

Это ввод:

3 2
1 2 3
5 5 2
6 3 4

Это вывод, который я должен получить:

4

1 Ответ

0 голосов
/ 23 октября 2019

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

int max = a[0][k+1];

for ( int i = 1; i < n; i++ )
{
    if ( max < a[i][k+1] ) max = a[i][k+1];
}

Я предполагаю, что k + 1 меньше m. То есть эта проверка

if (k> = m) cout << "No"; </p>

должна быть выполнена до цикла. Например,

int max;

if ( k + 1 < m )
{
    max = a[0][k+1];

    for ( int i = 1; i < n; i++ )
    {
        if ( max < a[i][k+1] ) max = a[i][k+1];
    }
}

if ( not ( k + 1 < m ) )
    cout<<"No";
else
    cout<<max;    

И для этого ввода

3 2

программа должна выдать «Нет», потому что k + 1, когда k равно 2, дает 3 и 3 не является допустимым индексом,Диапазон допустимых индексов для этого ввода составляет [0, 2].

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

3 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...