• Jueves 18 de Abril de 2024, 13:45

Autor Tema:  Problema Con Este Código  (Leído 2772 veces)

gladiator96

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Problema Con Este Código
« en: Viernes 9 de Noviembre de 2007, 13:03 »
0
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
  1.  
  2. program desordenar_matriz;
  3.  
  4. const
  5.  
  6. dim = 3;
  7. max = 4;
  8. min = 1;
  9.  
  10. type
  11.                      {fila} {columna}
  12. matriz = array [1..dim,1..dim] of integer;
  13.  
  14. {funcion para desordenar matriz 3x3}
  15.  
  16. function ale(a:integer):integer;
  17.  
  18. begin
  19. a:=random(max-min)+1;
  20. randomize;
  21. end;
  22.  
  23.  
  24. {Procedimiento para leer matriz 3x3}
  25.  
  26. procedure leermatriz(dim:integer;var b:matriz);
  27.  
  28. var
  29. i,j:integer;
  30.  
  31. begin
  32.  
  33. for i:=1 to dim do
  34.  
  35.   for j:=1 to dim do
  36.    begin
  37.    writeln('b[',i,'.',j,']:');
  38.    read(b[i,j]);
  39.    end;
  40.  
  41. end;
  42.  
  43. {Procedimiento para mostrar matriz}
  44.  
  45. procedure imprimirmatriz(dim:integer;var d:matriz);
  46.  
  47. var
  48. i,j:integer;
  49.  
  50. begin
  51.  
  52. for i:=1 to dim do
  53.   for j:=1 to dim do
  54.    begin
  55.    writeln(i,'.',j,':',d[i,j]);
  56.    end;
  57. end;  
  58.  
  59. {Comienza el programa}
  60.  
  61. var
  62. c,m:matriz;
  63. a,p,q:integer;
  64. i,j:integer;
  65.  
  66. begin
  67.  
  68. writeln('Introduzca los numeros de la matriz 3x3');
  69.  
  70. leermatriz(dim,c); {Llamo al procedimiento para leer matriz}
  71.  
  72. {Comenzamos a desordenar la matriz}
  73.  
  74.  
  75. for i:=1 to dim do
  76.  for j:=1 to dim do
  77.  begin
  78.   p:=ale(a);
  79.   p:=i;
  80.   q:=ale(a);
  81.   q:=j;
  82.   c[i,j]:=m[p,q];
  83.  end;
  84.  
  85. imprimirmatriz(dim,m); {Llamamos al procedimiento para imprimir matriz}
  86.  
  87. end.
  88.  
  89.  
-------------------
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

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Problema Con Este Código
« Respuesta #1 en: Viernes 9 de Noviembre de 2007, 20:27 »
0
Para numeros aleatorios:
Código: Text
  1.  
  2. uses  
  3.    Crt;
  4. var
  5.    I,Number: Integer;
  6. begin
  7.   Randomize;
  8.  (*
  9.     inicializamos la semilla para los numeros aleatorios,
  10.     asi cada vez que arranques el programa van a salir distintos.
  11.     Solo se debe llamar 1 sola vez a esta funcion, al principio del programa.
  12.  *)
  13.   for I:= 1 to 10 do
  14.   begin
  15.       Number := Random(3)+1;
  16.       Writeln(Number);
  17.   end;
  18. end.
  19.  
  20.  
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

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Problema Con Este Código
« Respuesta #2 en: Sábado 10 de Noviembre de 2007, 13:10 »
0
ok gracias por la explicacion  :D