Sicuramente ci sono dei problemi qui:
codice:
     for(i=0; i<=(N*N)-1; i++) {
          for(j=i++; j<=(N*N)-1; j++)
          if(ar[i ]==ar[j])
               flag=1;
          if(ar[i ]!=ar[j])
               flag=0;
     }
- scrivi j=i++ quando probabilmente intendi j=i+1; le due cose sono molto diverse: j=i++ fa sì che a j venga assegnato i e poi i venga incrementato di 1 (quindi fai due errori: j parte "indietro di uno" e i viene incrementato quando non dovrebbe); al contrario, j=i+1 "fa partire" j l'elemento dopo quello corrente.
- il for ripete solo l'istruzione che lo segue, per cui il tuo blocco di codice di fatto è:
codice:
     for(i=0; i<=(N*N)-1; i++) {
          for(j=i++; j<=(N*N)-1; j++) {
               if(ar[i ]==ar[j])
                    flag=1;
          }
          if(ar[i ]!=ar[j])
               flag=0;
     }
che ovviamente non è quello che intendevi; per ovviare al problema, usa le graffe correttamente (qui correggo anche il j=i++):
codice:
     for(i=0; i<=(N*N)-1; i++) {
          for(j=i+1; j<=(N*N)-1; j++) {
               if(ar[i ]==ar[j])
                    flag=1;
               if(ar[i ]!=ar[j])
                    flag=0;
          }
     }
o, anche più chiaro:
codice:
     for(i=0; i<=(N*N)-1; i++) {
          for(j=i+1; j<=(N*N)-1; j++) {
               if(ar[i ]==ar[j])
                    flag=1;
               else
                    flag=0;
          }
     }
Nota però che il programma così è ancora sbagliato: ad ogni iterazione flag viene sovrascritto, per cui se l'ultima coppia esaminata è uguale all'uscita del ciclo flag rimarrà impostato a zero. Per ovviare a questo problema, ti basta impostare flag a 1 quando individui duplicati e non impostarlo mai a zero in seguito. Dato poi che, una volta che hai individuato una coppia di duplicati, il tuo lavoro è finito, puoi anche uscire con un break subito dopo aver impostato flag a 1:
codice:
     for(i=0; i<=(N*N)-1; i++) {
          for(j=i+1; j<=(N*N)-1; j++)
          {
               if(ar[i ]==ar[j])
               {
                    flag=1;
                    break;
               }
          }
     }