2016-02-08 3 views
0

Я бы хотел вычесть наивысший элемент в этой матрице 5x2 с последующим элементом в другом столбце.Поиск наибольшего элемента в строке многомерного массива

Для примера: самый высокий элемент сейчас - 150, местоположение которого (4,1). Я хотел бы вычесть с , который является последующим элементом. Точно так же, если старший элемент принадлежит первому столбцу, он должен вычесть его из элемента в следующем столбце.

Благодаря

int big=0,lead=0,m,n; 

int a[5][2]={140,82,89,150,110,110,112,106,88,90}; 

for(int j=0; j<5; j++) 
{ 
    for(int i=0 ; i<2; i++) 
    { 
     m=j; 
     n=i; 

     if(a[j][i] > big) 

     { 
      big = a[j][i]; 

      if(big == a[j][i]) 

      { 
       lead = big-a[j][1]; 
      } 

      else 

      { 
       lead = big-a[1][i]; 
      } 
     } 
    } 
} 

     cout<<big<<"\n"<<lead<<"\n"<<m<<","<<n<<endl; 
} 
+1

Вы имеете в виду предыдущий, а не последующее? – Carlos

+1

На ваш вопрос? – alcedine

+0

Это будет предыдущий, если самый высокий элемент принадлежит столбцу «2», он будет далее, если старший элемент принадлежит столбцу «1». @alcedine Я хочу вычесть наивысший элемент с его нижним элементом в другом столбце. –

ответ

0

Я думаю, что вы объявляете массив неправильно, я построить 2D массив в качестве

int a[2][5] = { 
    {140,82,89,150,110}, 
    {110,112,106,88,90} 
}; 

Во-первых, вы хотите, чтобы найти самый большой, используя большую переменную (я предполагаю). Таким образом,

int big = 0,n,m; 
for(int x = 0; x < 2; x++){ 
    for(int y = 0; y < 5; y++){ 
     if(a[x][y] > big){ 
      big = a[x][y]; 
      n = x; 
      m = y; 
     } 
    } 
} 

Здесь вы сохраняете самую большую и ее координату при переменных n и m.

После этого, вы хотите, чтобы вычесть его с колонкой - 1 (колонка + 1, если он находится на первой колонке)

if(m == 0){ 
    big -= a[n][m + 1]; 
} 
else{ 
    big -= a[n][m - 1]; 
} 
Смежные вопросы