Salve ho il seguente problema; se mi da una matrice n*k, e ci chiede qual'è l'elemento massimo (piu grande)della parte superiore della matrice e quello minimo (piu piccolo) della matrice , tenendo conto che la parte superiore sarebbero tutti i numeri che si trovano sopra i 0, e naturlamente la parte inferiore sarebbe quella sotto i 0:


codice:
0            0  0
  0 0    0        0
       0             0

IO lascio la colonna ferma (c) e scorro le righe ma non so come dirli che quando si trovi uno 0, si deve fermare e si deve incrementare la colonna c++

grazie.

codice:
# include <iostream>
 using namespace std;
 
 const int n=5;
 const int k=9;
 
 int main ()
 {
	 int maxSup=0;
	 int c=0;
	 int a[n] [k]={{5,7,3,2,2,7,8,5,8},
			    {0,3,5,4,6,0,0,5,4},
			    {6,0,0,7,0,9,9,0,6},
			    {7,4,5,0,4,2,5,7,0},
			    {3,4,8,7,5,9,4,9,9}};
	 for (int i=0;i<n;i++)
	 {
		 for (int j=0; j<k;j++)
		 cout<<a[i][j]<<" ";
		 cout<<endl;
	 }
	 

	

		
		 for (int i=0; i<n;i++)
		 {
			 while (a[i][c]!=0)
			 
			  {
				if (a[i][c]>maxSup)
				maxSup=a[i][c];
                                c++;

				
			  }
		}
	
			 cout<<"il maximo e"<<maxSup;
			
		 
	 
	 
	 
return 0;	 
}