Programa que simule particula en el universo

Iniciado por xXJoSe13Xx, 14 Octubre 2017, 17:49 PM

0 Miembros y 1 Visitante están viendo este tema.

xXJoSe13Xx

Tengo que realizar un programa en C que pide esto ------> https://ibb.co/f8fCLb
Y no se como proceder, ahora mismo no se como seguir, mi código hasta ahora es este--
https://ibb.co/g04iRG

Lo siento he tenido que subir las imagenes a esos enlaces.


· Los titulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex

engel lex

el código apenas se lee, copia y pégalo Aquí ( no olvides usar etiquetas GeSHi)

a demás explica con detalles tus dudas y en que estás bloqueado
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

xXJoSe13Xx

#2
Lo siento el código que llevo es este:
#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("                              SIMULACION UNIVERSO RADIAL ENTERO \n");
printf("                              ********************************** \n");
int seguir, distancia, salto, nu;
int i;
int contador;
       srand (time(NULL));
nu = -1;
do
       {
printf("Introduce la distancia inicial de la particula al centro: ");
   scanf("%d" , &distancia);
       salto;
   nu++;
printf("Comienza la Simulacion: \n");

printf("Distancia de la particula al Centro en el salto numero %d: %d \n", nu ,distancia);
for(i=1;;i++)
{
salto = rand()%6+1;
printf("Distancia de este salto: %d \n", salto);
printf("Distancia de la particula al Centro en el salto numero %d: %d \n", i ,distancia-salto);
if (distancia <= 0)
       {
           printf("Fin de simulacion, se han realizado %d saltos", contador);
           break;
       }
}
printf( "\n\nHacemos otra (s/n)?: " );
     fflush( stdin );
     scanf( "%c", &seguir );
  } while ( seguir != 'n' );


return 0;
}



Y es de un trabajo de la universidad, soy totalmente principiante. El código esta a medias, pero principalmente porque no se exactamente que hacer.
Hasta ahora en la universidad no hemos dado mucho de programación, pero de repente nos pide un código así, y no me sale, he buscado información respecto a como introducir números aleatorios.
Pero principalmente al ir desarrollando el código, me he dado cuenta, que la distancia al restar por el salto, en el primer numero introducido se resta correctamente, pero después se resta por números aleatorios y hace saltos de forma infinita, y nunca llega a 0 con lo que no se para. Tampoco se como contar los saltos que realiza, y obviamente que se desarrolle correctamente la distancia restada por el salto hasta llegar a 0.


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

srWhiteSkull

#3
Por lo que observo es mas un problema de desconocimiento no ya de los fundamentos de c, sino de la programacion en general y me cuesta creer que todo eso lo hayas escrito tu.... sin animo de ofender.

Mi recomendacion es que hagas un curso de c, por ejempl9 c con clase... comienza desde el principio y has ejercicios basicos, y luego afronta el trabajo q necesitas hacer.

Suerte  ;)

Serapis

#4
Mmmm... a ver si de entrada ofreces una distancia X...
Y luego se obtiene al azar un valor de salto, y se le resta a X, es claro que tras varios saltos, se acabará llegando a 0.

Verifica que si la distancia es MENOR O Igual a 0, salga del bucle, o dicho de otro modo, condiciona el bucle for como un "do ... while (Distancia >0)

En resumen:

Main
   entero simulaciones, x, respuesta

   Hacer
       x = PedirDistancia
       llamada MoverParticula(x)
       simulaciones +=1
       respuesta = PedirOtraParticula
   Repetir Mientras (respuesta = 1) // ó "si", ó TRUE, ó lo que acuerdes...

   Mostrar simulaciones //el número de simulaciones realizadas.
Fin Main


Te pide que se haga con funciones, luego al menos una función, debieras crear...

Funcion MoverParticula( entero distancia)
   entero Saltos, salto

   Hacer mientras (Distancia > 0)
       Mostrar distancia //actual
       salto = ValoralAzar(entre 0 y 9)
       saltos +=1
       distancia -= salto
   Repetir

   Mostrar distancia 0 //aunque sea negativo
   Mostrar saltos //la cantidad de saltos realizada
   
Fin funcion


Y si no hay más eso debería ser todo...

Mi consejo es que no esperes a dar una lección en la universidad para aprenderlo, revisa tus libros y trata de adelantarte al temario...


xXJoSe13Xx

Muchas gracias a todos, tenéis razón, lo mejor es que me adelante en temario por mi mismo. Estoy muy perdido en C , me he querido meter muy de golpe en este mundo sin conocimientos ;D  . Y muchas gracias por la función, ya me sale el programa como debía salir.