Pascal/Turbo Pascal - PROBLEMON URGENTE!1

 
Vista:

PROBLEMON URGENTE!1

Publicado por Programer (5 intervenciones) el 26/11/2009 19:06:47
Hola soy nuevo en esto de la programacion y necesito URGENTEMENTE una respuesta a esta pregunta: como se hace para que el ordenador genere un numero aleatorio entre dos valores que el ususario introduce, por ejemplo, yo quiero un numero aleatorio entre 100 y 132. como hago eso, ademas esto se tiene que colocar en un subprograma, aqui os dejo lo q tengo hecho asta ahora

PROGRAM JfK;{Como variables del programa, es decir fuera, están las variables z y qde tipo integer}
VAR
z,q:integer;
FUNCTION InterGen (z,q:integer):integer;
BEGIN
writeln ('Introduzca numero minimo');
readln (z);
writeln ('Introduzca numero maximo');
readln (q);
IF (z>q) THEN
REPEAT
writeln('Introduzca de nuevo los valores');
writeln('Introduzca numero minimo');
readln(z);
writeln('Introduzca numero maximo');
readln(q);
UNTIL (z<q);
InterGen:=random(q);
END;
Begin{Programa Principal}
randomize;
writeln(InterGen(z,q));{No poner write en el programa, esto es de prueba}
readln;
END.{Fin del programa principal}

Yo creo que el problema esta despues del UNTIL en la instruccion que es: InterGen:=random(q); xk en esa instruccion me genera numeros aleatorios de 0 hasta el valor de q, y yo lo q quiero es lo q e mencionado antes desde un minimo deseado hasta un maximo deseado.
En serio necesito una respuesta rapida de esto
Muuxas graciaas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PROBLEMON URGENTE!1

Publicado por Alexis (44 intervenciones) el 26/11/2009 23:29:33
Bueno, entonces utiliza otro repeat .. until

repeat
InterGen:=random(q);
until(InterGen>z);

Saludos!!

P.D.: Recuerda utilizar randomize; Si no sabes para que sirve busca info en google ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PROBLEMON URGENTE!1

Publicado por Diego Romero (996 intervenciones) el 27/11/2009 00:13:37
function Aleatorio(Min,Max: integer): integer;
var
aux: integer;
begin
aux:=Max-Min;
aux:=Random(aux+1);
Aleatorio:=Aux+Min;
end;

Por supuesto Min tiene que ser menos a Max, como lo has controlado ya en tu programa.

Lo que hago aquí es restar Min a Max, en tu ejemplo 132-100=32, luego genero un número aleatorio entre 0 y 32, el hecho que sea hasta 32+1 se debe a que random() elije un número que puede ser cero pero nunca es igual o mayor a la constante pasada como parámetro, lo que significa que 33 (32+1) es un número válido en el rango elegido, si pusiera solo 32 el número más alto a ser elegido sería el 31 y 32 nunca será elegido.
Por último sumo Min (100) al número elegido, lo que resulta al final en un número aleatorio entre 100 y 132 que es lo que había que hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar