Pascal/Turbo Pascal - ayuda programa

 
Vista:

ayuda programa

Publicado por Suckelo (1 intervención) el 14/03/2007 22:23:08
buenas me podriais decir cm acer un program que dentro de un cuadrado de lado 2 "dispare" n puntos con un random?
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:ayuda programa

Publicado por Carlos Guimaraenz (265 intervenciones) el 14/03/2007 23:08:43
¿Es en modo gráfico? El cuadrado es de lado 2... ¿pixeles, cm, mm?
Si puedes especificar más, se te podrá ayudar. Hasta luego.
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:ayuda programa

Publicado por Suckelo (2 intervenciones) el 15/03/2007 11:58:20
buenas carlos,
mira te pongo el enunciado del ejercicio:
aproxima PI usando el siguiente experimento.
Se generan aleatoriamente n puntos(introducidos x el usuario) dentro del cuadrado [-1,1] x [-1,1] y se anotan los q cayeron dentro del circulo de radio 1 centrado en el origen(dentro del cuadrado).luego tienes q calcular los puntos q caen dentro del circulo y dividirlos entre el total de puntos, asi da el porcentaje de acierto.
El caso esq ni los puntos ni el cuadrado ni el circulo tienen q verse,solo hay q acer q los n puntos caigan dentro del cuadrado de lado 2, luego calcular la distancia de cada punto al centro (del circulo y el cuadrado) y si es < o = que 1 es q ha caido dentro del circulo por lo que le sumas 1 a los aciertos, sino , es que ha caido en la porcion de cuadrado q no cubre el circulo y no cuenta.

Esa es mas o menos la idea.
muchas gracias x adelantado
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:ayuda programa

Publicado por Carlos Guimaraenz (265 intervenciones) el 15/03/2007 17:31:34
Hola Suckelo!
Primero lees n para saber cuántas repeticiones deberás hacer.
Deberás tener una variable "cant" inicializada en 0 para ir contando la cantidad de aciertos en el círculo.
Usa un FOR (de 1 a n) donde harás:
- obtener número
- verificar si hay acierto
- si hay, incrementar la variable cant

Para obtener el número, puedes hacer lo siguiente (primero que nada debes inicializar la generación de números aleatorios con Randomize):
var
k : integer;
dist, x, y : real;
...
...
k := Random(2001) - 1000; { da un número entre -1000 y 1000 }
x := k / 1000; { me devuelve un número con decimales entre -1 y 1para coord X }
k := Random(2001) - 1000; { da un número entre -1000 y 1000 }
y := k / 1000; { me devuelve un número con decimales entre -1 y 1para coord Y }

A partir de ahi, ya teniendo x e y, pasas a verificar:
dist := sqrt(sqr(x) + sqr(y)); { fórmula para obtener la distancia al centro }
if (dist <= 1) then
cant:=cant + 1;

Espero que funcione bien, no lo he probado, y que me entiendas...

Un abrazo!
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:ayuda programa

Publicado por suckelo (2 intervenciones) el 15/03/2007 20:45:35
muchas gracias carlos!!!
solo me faltaba como hacer que los puntos cayeran dentro del cuadrado y con tu sugerencia fue cm la seda!!
Es agradable saber q todavia ay gente q se presta a ayudar a los demas!
saludos!
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