Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2012, 17:57
Zarkiria
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Generar array con numeros pares aleatorios sin repeticion pascal

Hola, tengo que rellenar un array de forma aleatoria en pascal con los 20 primero numeros pares (2-40) sin que se repitan, pero mi código muestra lo que le da la gana. Os agradecería mucho que me dijerais en que falla. Saludos.

Código:
program vectores;
USES crt;



CONST
 Max = 20;
 max_filas=40;
TYPE
 vector =   ARRAY[1..max] of INTEGER;

 function par(numero:integer):integer;
  begin
     randomize;
     if numero mod 2 <>0 then
        while numero mod 2<>0 do
        begin
        numero:=random(max_filas)+1;
        end;
     par:=numero;
  end;

function comprobar(posicion,numero:integer;vector_comprobar:vector):integer;
var contador:integer;
  begin
        randomize;
        FOR contador:= 1 TO posicion-1 DO
        begin
        if (vector_comprobar[contador]=numero) then
           numero:=par(numero);
         numero:= comprobar(contador,numero,vector_comprobar)
        end;
      comprobar:=numero;
  end;

VAR
 v:vector;
 i,j,inicializar, num:integer;
BEGIN
     randomize;
     ClrScr;
     i:=1;
     while i<=Max DO
     BEGIN

      num:=random(max_filas)+1;
      inicializar:=comprobar(i,num,v);

      v[i]:=inicializar;
       i:=i+1;
      end;


            (* visualizo resultado*)
            FOR j:= 1 TO i-1 DO
             writeln(' el número par es ', v[j],' posicion: ',j);
     readln
END.