2016-06-13 2 views
-3

У меня есть эта функция, и я хочу, чтобы ваша помощь находила, если есть более одного максимума. Если существует более одного максимума, я хочу напечатать «no unique max».Как подсчитать, сколько максимумов в массиве?

ниже код успешно находит максимум, но счетчик, который countes сколько раз появляется не работает максимум, и я получаю сообщение:

предложить скобки вокруг пустого тела с

int find_max(int b[N][N]) 
{ 
    int max = b[0][0]; 
    int x,y; 
    int counter=0; 
    int a=0,v=0,c=0; 
    for (x = 0; x < N; x++) 
    { 
     for (y = 0; y < N; y++) 
     { 
      if (max < b[x][y]) 
      { 
       max = b[x][y]; 
       a=x; 
       v=y; 
      } 
     } 
    } 

    c=((a*10)+v); 
    for (x = 0; x < N; x++) 
    { 
     for (y = 0; y < N; y++) 
     { 
      if(max); 
      { 
      counter++; 
      } 
     } 
    } 
if(counter>1) 
    printf("no uniqe max"); 
else 
    return c; 
} 
+2

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

+0

'if (max);' ничего не делает из-за ';'. – chux

ответ

1

на первый взгляд:

if(max == b[x][y]) // not if(max); 
{ 
    counter++; 
} 
2

Я считаю, что проблема (по крайней мере одна проблема) является следующая строка:

if(max); 

Если max не равен нулю, это всегда будет true. Я думаю, что вы хотите что-то вроде:

if(b[x][y] == max) 

(примечание: как сравнения и удаления «;»)

Предупреждения (я подозреваю), приходящие с «;» после вашего «if» это завершает if и следующий раздел «{...}» всегда выполняется, он не связан с if.

+0

Я все еще получаю тот же комментарий – kayan

+0

Извините, я положил дополнительный ')' в if. Я исправил это. Какую ОС и компилятор вы используете? Обычно, когда компилятор выдает предупреждение или ошибку, он предоставляет и соответствующий номер строки. Вы можете опубликовать эту информацию. – Dweeberly

+0

Предупреждение может быть из-за отсутствия возвращаемого значения, когда нет уникального максимума ... Попробуйте вернуть -1, когда нет уникального максимума – Cherubim

Смежные вопросы