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

[0] Índice de Mensajes

Ir a la versión completa