Ciao, come ha detto AlessandroS, per rendere più 'scorrevole' la lettura di codice, si devono usare i tag appropriati. Apparte questo, analizziamo il problema da te proposto. Devi inserire numeri interi da 0 ad N, con N uguale a ((RxC)-1) , giusto? il primo numero (0) deve partire dall'angolo in basso a sinistra , e l'ultimo numero (N-1) nell'angolo in alto a destra, correggimi se sbaglio. A questo punto possiamo dire che per il zig-zag abbiamo due direzioni: una che va dall'alto verso il basso e l'altra dal basso verso l'alto . Il verso cambia direzionequando incontra diciamo 'la cornice' della matrice, quindi il verso non cambia fintanto che l'indice di riga è compreso tra 0 e (R-1) e l'indice di colonna tra 0 e (C-1). Il ciclo totale finisce quando l'indice di riga è 0 e l'indice di colonna è (C-1), ovvero la posizione dell'ultimo elemento da inserire (in alto a destra).
A questo punto l'utilizzo dei for non mi sembra una buona idea, in quanto gli indici variano in base a determinate condizioni. Io suggerirei di riempire la matrice utilizzando due cicli while per le direzioni, e un ciclo generale che verifica la condizione di posizionamento sull'ultimo valore. Fai una prova .