Programación General > Pascal
Problema Con Este Código
(1/1)
gladiator96:
Hola ^^ soi nuevo jeje me acabo de registrar :D y la verdad el foro está bastante bien :D...
haber si me podeis ayudar con este ejercicio no se bien donde está fallando... soi bastante novato y llevo muy poco programando :S .
El ejercicio pide leer una matriz por pantalla 3x3, generar un numero aleatorio entre 1 y 3 y asignarlo a p , hacer lo mismo y asignarlo a q y luego intercambiar M[i,j] con M[p,q].
El resultado sera la matriz desordenada.
nota: se pide implementar una funcion que genere l numero aleatorio.
Este es el codigo, tengo el problema de que siempre me genera el numero 0 . :S
--- Código: Text --- program desordenar_matriz; const dim = 3;max = 4;min = 1; type {fila} {columna}matriz = array [1..dim,1..dim] of integer; {funcion para desordenar matriz 3x3} function ale(a:integer):integer; begina:=random(max-min)+1;randomize;end; {Procedimiento para leer matriz 3x3} procedure leermatriz(dim:integer;var b:matriz); vari,j:integer; begin for i:=1 to dim do for j:=1 to dim do begin writeln('b[',i,'.',j,']:'); read(b[i,j]); end; end; {Procedimiento para mostrar matriz} procedure imprimirmatriz(dim:integer;var d:matriz); vari,j:integer; begin for i:=1 to dim do for j:=1 to dim do begin writeln(i,'.',j,':',d[i,j]); end;end; {Comienza el programa} varc,m:matriz;a,p,q:integer;i,j:integer; begin writeln('Introduzca los numeros de la matriz 3x3'); leermatriz(dim,c); {Llamo al procedimiento para leer matriz} {Comenzamos a desordenar la matriz} for i:=1 to dim do for j:=1 to dim do begin p:=ale(a); p:=i; q:=ale(a); q:=j; c[i,j]:=m[p,q]; end; imprimirmatriz(dim,m); {Llamamos al procedimiento para imprimir matriz} end. -------------------
Tengo otra duda sobre generar numeros aleatorios en un ejercicio tengo que generar 4 numeros aleatorios pero cuando lo hago me saca 4 numeros iguales... porque?¿ tampoco se muy bien como funciona lo de randomize si me podeis aclarar eso mejor jeje.
Enko:
Para numeros aleatorios:
--- Código: Text --- uses Crt;var I,Number: Integer;begin Randomize; (* inicializamos la semilla para los numeros aleatorios, asi cada vez que arranques el programa van a salir distintos. Solo se debe llamar 1 sola vez a esta funcion, al principio del programa. *) for I:= 1 to 10 do begin Number := Random(3)+1; Writeln(Number); end;end. La funcion random lleva como parametro el maximo valor que puede devolver incluido el 0 (cero). Es decir, sacara usando el 3 los numeros 0,1,2 y como le sumamos 1, seran entre 1 y 3.
gladiator96:
ok gracias por la explicacion :D
Navegación
Ir a la versión completa