• Domingo 22 de Diciembre de 2024, 16:52

Autor Tema:  Random!!  (Leído 2937 veces)

pascal

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Random!!
« en: Jueves 7 de Agosto de 2008, 12:04 »
0
Buenas, mi porblema es:


tengo que hacer un programa que al lanzar un dado X veces, sacar el porcentaje de de cada numero que ha salido. el problema es que al hacer el random como hago para que sea cada vez que tiro, es decir cada tirada que realice, que actue el random. Con un bucle while? y también como sería para que en el random no entrase el 0, solo fuese del 1 al 6, ay que son los nuemros de las caras del dado.



Espero su respuesta y muchas gracias por todo

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Random!!
« Respuesta #1 en: Sábado 9 de Agosto de 2008, 07:23 »
0
Código: Text
  1.  
  2. randomize;
  3. for i :=1 to MAX do
  4. begin
  5.     n:= random(6)+1;
  6.     writeln(n);
  7. end;
  8. readln;
  9.  
  10.  

pascal

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Random!!
« Respuesta #2 en: Lunes 11 de Agosto de 2008, 10:56 »
0
gracias por tu ayuda amigo enko

pascal

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Random!!
« Respuesta #3 en: Lunes 11 de Agosto de 2008, 11:42 »
0
acudo a ustedes con otro problema.

resulta que despues de hacer el random, lo que quiero es que cuente cuantas veces sale cada numero, y con lo cual hago un contador para que cuente con cada numero del 1 al 6 que genera el random. hago un bucle repeat dentro del for para el contador, pero al compilar me da error en el repeat, y el error es este : Type mismatch.alguien sabe porque me da ese error? gracias de nuevo

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Random!!
« Respuesta #4 en: Lunes 11 de Agosto de 2008, 18:05 »
0
Deberias poner el codigo para saber cual es el problema exactamente(no somos adivinos).

Aunque un type mismatch (tipos no coincidentes) significa por lo regular que estas tratando de guardar valores incompatibles en variables incompatibles, por ejemplo, un float en una variable integer.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

pascal

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Random!!
« Respuesta #5 en: Martes 12 de Agosto de 2008, 09:43 »
0
Código: Text
  1. var
  2.  
  3.    num, n, i,contador1,contador2,contador3,contador4,contador5,contador6 : integer;
  4.    porcentaje : real;
  5.  
  6.  
  7.    begin
  8.    randomize;
  9.  
  10.  
  11.    writeln('Escriba cuantas veces se tira el dado.');
  12.    readln(num);
  13.  
  14.  
  15.   for i:=1 to num do
  16.       begin
  17.            n:= random(6) +1;
  18.           { writeln(n); }
  19.            contador1:=0;
  20.            contador2:=0;
  21.            contador3:=0;
  22.            contador4:=0;
  23.            contador5:=0;
  24.            contador6:=0;
  25.  
  26.                         repeat
  27.                               if n=1 then
  28.                               contador1:=contador1 + 1
  29.                               else if n=2 then
  30.                               contador2:= contador2 + 1
  31.                               else if n=3 then
  32.                               contador3:= contador3 + 1
  33.                               else if n=4 then
  34.                               contador4:= contador4 + 1
  35.                               else if n=5 then
  36.                               contador5:= contador5 + 1
  37.                               else if n=6 then
  38.                               contador6:= contador6 + 1;
  39.                         until num;
  40.  
  41.  
  42.       end;
  43.  

el error me lo da en el repeat!

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Random!!
« Respuesta #6 en: Martes 12 de Agosto de 2008, 19:33 »
0
Exactamente es un type mismatch, en esta parte:

Código: Pascal
  1.  
  2. until num;
  3.  
  4.  

Esta esperando un valor boleano, y tienes un valor entero.

Lo que necesitas es un contador para el ciclo tambien, que vaya de 1 hasta el numero de veces que quieres lanzar el dado.
Lo puedes hacer con otro for, o si lo quieres hacer con repeat..until, debes poner lo siguiente, en la parte de repeat:

Código: Pascal
  1.  
  2. J:=0;
  3. repeat
  4. J:=J+1;
  5.  
  6.  

En la parte del until:

Código: Text
  1.  
  2. until J = Num;
  3.  
  4.  

el J=num devuelve un valor boleano, aunque eso creo que ya lo sabes :P.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: Random!!
« Respuesta #7 en: Viernes 17 de Octubre de 2008, 03:13 »
0
es mucho mas facil si pruebas esto, por ahi no sabes lo que es un array y yo meti la pata
Código: Text
  1.  
  2. program respuesta;
  3. type
  4.    vec_caras = array [0..5] of integer; {esto es por que voy a operar con modulos, MOD}
  5. var
  6.    caras: vec_caras;
  7.    n: byte; {n para el numero}
  8.    c, i: integer; {c para la cantidad de veces que vas a tirar el dado, i es el contador para un for}
  9. begin
  10.    randomize;
  11.    write ('cuantas veces se tirará el dado?: '); readln(c);
  12.    for i:=1 to c do
  13.     begin
  14.        n:= random(6)+1; {ahora no recuerdo si el random va de 0 a n-1, si es asi esta bien el cod}
  15.        vec_caras[n mod 6]:=vec_caras[n mod 6] + 1; {esto incrementa en 1 el vector en esa posicion}
  16.     end;
  17.   for i:=0 to 5 do
  18.      writeln('caras [ ',i+1,' ] = ',caras[i]);
  19. end.      
  20.  
  21.  

mira si te sirve!