Salve a tutti,
mi presento, sono Francesco e sono uno studente d'ingegneria che si avvicina all'esame di programmazione in C++.
Seguo da un po' il forum e siccome mi sto appassionando alla materia ho deciso di iscrivermi per confrontarmi con voi

Vado dritto al punto: sto provando a sviluppare un programma che mi dia il massimo dei valori sopra la diagonale principale di una matrice quadrata.
Il codice da me sviluppato è il seguente:
codice:
using namespace std;
#include <iostream>
#include <stdlib.h>




int max(int mat[50][50],int N){
    
    int i,j;
    int max=0;
    
    while(i!=j || j>i) {
        
        for (i=0;i<N-1;i++){
                max=mat[i][1];
                for(j=2;j<N;j++){
            
                if(max<mat[i][j]){
                    max=mat[i][j];
                }
            }
        }
        
    
}
    return max;
}




int main(){
    
    int mat[50][50];
    int i,j,N;
    
    cout<<"inserire il numero di righe e colonne della matrice:";
    cin>>N;
    
    for (i=0;i<N;i++){
        for(j=0;j<N;j++){
            cout<<"inserire i valori:";
            cin>>mat[i][j];
        }
    }
    
    cout<<"il massimo e'"<<max(mat,N);
    
    
    return 0;
}
Penso ci sia un errore di tipo logico nella mia funzione, ho ragionato disegnando su foglio una matrice 3x3 ed ho notato che affinché gli elementi siano sopra la diagonale principale è necessario che i sia diverso da j e che j sia maggiore di i.
A questo punto (supponendo sia valida la mia impostazione del while), credo di aver sbagliato qualcosa nel ciclo for, ma ahimè non riesco proprio a trovare il mio errore.
Qualcuno potrebbe aiutarmi?
Vi ringrazio in anticipo