RE:E pensado lo siguiente
Hasta que entendí lo que quieres :).
Ok, la idea es llenar la matriz siguiendo la diagonal y en forma invertida. En realidad el número que se almacena en cada posición de la matriz no es importante, el problema es cómo recorrer la matriz en la forma correcta, es decir por sus diagonales.
Siempre que tengo problemas de matrices comienzo escribiendo cómo tendría que generar los indices, para este caso la lista de pares de indices a generar es la siguiente para el caso de una matriz de 5x5 (25 elementos en total)
1,1
1,2
2,1
1,3
2,2
3,1
1,4
2,3
3,2
4,1
1,5
2,4
3,3
4,2
5,1
---
2,5
3,4
4,3
5,2
3,5
4,4
5,3
4,5
5,4
5,5
Si sigues con el dedo los pares en la matriz verás este es el orden correcto comenzando desde la esquina superior izquierda. Notarás que la lista está separada en dos luego del par 5,1, esto es así por dos razones que saltan a la vista. Una allí parece terminar una serie repetitiva y salta a otra muy distinta, esto coincide con el "quiebre" de la matriz, es decir cuando se alcanza la diagonal principal opuesta. El cambio en la generación de la serie parece indicar que se necesitan dos algoritmos diferente para cada mitad de la matriz y luego verás que esto es así.
Concentremosnos en la primera parte de la lista:
El lado de la "I" de la lista parece ser erratica, pero hay un patron, siempre comienza en 1 pero termina en un valor más que la serie anterior: (1), (1,2), (1,2,3), (1,2,3,4), (1,2,3,4,5), el valor final sugiere un for cuyo indice (del for, no de la matriz) parece ser el tope de un ciclo que siempre comienza en uno. Algo como esto:
For LI:=1 to 5 do
For I:=1 to LI do
WriteLn(I);
Si ejecutas este pequeño programa verás que se genera la serie correcta para I (al menos para la parte superior izquierda de la matriz).