ANDPRI ha scritto:
Prima di tutto devi ritornare un bool nella funzione sella, poi credo che nelle funzioni min e max dovresti ritornare il valore, non la posizione, e nell'if di sella le condizioni sono sbagliate. Ammettendo che nel min e max ritorni il valore, allora dovresti fare
if((m[i][j]==min_el(colonna)&&m[i][j]==min_el(riga))||(m[i][j]==max_el(colonna)&&m[i][j]==max_el(riga)))
Grazie per la risposta! In realtà avevo già provato a fare in questo modo ma non funzionava, ma può anche darsi che abbia sbagliato qualcosa!
Comunque penso di aver risolto, cioè ho provato un po' ma questo dovrebbe funzionare, anche se è solo un caso: minimo della riga i-esima, massimo della colonna j-esima.
Per l'inverso dovrebbe essere più o meno lo stesso, ma... non c'ho voglia di farlo
bool sella(const Matrice m, const int n, int & posi, int & posj)
{ int i, j, col;
bool found=false;
bool esci=false;
i=0;
while(i<n && !found)
{
col=min_el(m[i], n);
j=0;
esci=false;
while(!found && j<n && !esci)
{
if (m[j][col]>m[i][col])
esci=true;
else{
j++;
}
}
if (esci==false)
{posi=i;
posj=col;
found=true;}
else{
i++;}
}