El 02/06/11 09:13, vascocho escribió:
> Hola gracias por su ayuda aca va mi primer duda en un ejercicio de
> progrmacion.
>
> *Actividad a realizar
>
> *Escribir una función que devuelva la tirada de un dado de rol de n caras.
> Se contemplan dados que no existirían físicamente como los de 5 caras.
>
> *El Ejercicio resuelto lo adjunte.*
>
> *Repuesta del profesor :*
>
> El ejercicio está bien, no debería colocarse el srand dentro de la función o
> no tendrá aleatoriedad
>
> *Duda*:
> Donde colocar el srand.

Te contesto en linea con varios comentarios ya que estamos. Son cosas
que se van aprendiendo y que esta bueno saber desde un principio, pero
nada loco. Igual se que es un archivo de ejercicio y muchos de los
comentarios seguramente ya los sabes, pero por las dudas. Otra cosa que
esta bueno es compilar con "-Wall" que te habilita todos los warnings.

> 4.2a.cpp
>
>
> #include <conio.h>
> #include <iomanip>
> #include <iostream>
> #include <ctime>
> #include <cstdlib>

Lo recomendado es poner solo los includes necesarios.

> using namespace std;
>
> int dado(int x);
> int w;

"int w;" esta al pedo (además que es global innecesariamente).

> int main() {
>       cout <<"\nEl resultado es: " << dado(w);

En vez de "\n" poné "endl" y ponelo al final para que ponga el enter
después de la salida y no te quede el prompt pegado. Quedaría así:

    cout << "El resultado es: " << dado(w) << endl;

> }
> int dado(int x)//
> {     
>       srand(time(NULL)); //se obtiene una distancia al azar 
>       int w=rand()%6+1; 
>       
>       return (w);
> }

Bueno, acá la parte que preguntaste. Como este programa da solo un
resultado cada vez que se ejecuta da lo mismo donde este puesto el
"srand". Igual tiene un problema que es que si ejecutas varias veces el
programa en el mismo segundo, time() te va a devolver lo mismo y la
semilla para srand va a ser la misma y por lo tanto el resultado
también. En vez de usar time() podes usar getpid() por ejemplo para la
semilla a srand y funcionaría mejor.

Saludos


Responder a