|
|
Respuesta 1: RANDOM(x) devuelve un número natural que ca desde 0..x-1 hasta x-1. Entonces, si quieres que te salgan números más pequeños, pues la "x" la pones más pequeña. El siguiente RANDOM (RANDOM(2)) es para que devuelva 2 valores: 0 ó 1, y dependiendo, le ponga signo negativo o no, porque como acabamos de ver, el RANDOM devuelve SOLO POSITIVOS. De algna manera había que meter los engativos aleatoriamente también, ¿no?
Respuesta 2: Las constantes m y n las pones GRANDES, como para que el usuario pueda meter el nº que quiera y siempre sea menor. Debes ser consciente de que está consumiendo TODA LA MEMORIA, aunque lego el usuario solo emplee "un trocito" (por si te lo preguntan, que sepas que no es lo más eficiente).
Entonces, el usuario metería el "mmax" y el "nmax", que podrían tomar valores entre 1..m y 1..n, de forma que el usuario pueda "crear" una "submatriz" dentro de la tuya. Solo le estás limitando en la grande, nada más. Entonces, en el procedimiento de crear aleatoriamente la matriz, le tendrías que añadir los 2 parámetros que metió el usuario:
PROCEDURE Rellenar_Matriz_RANDOM(VAR matriz:TMatriz;mmax,nmax:WORD{los "máximos" de la matriz del usuario});
Y en los bucles FOR que hay, pues en vez de hasta m y n, hasta mmax y nmax (que, repito, son más pequeñas o iguales a m y n); y al mostrar la matriz, igual. Que escriba soo los valores hasta los que escribió el usuario.
|