C/Visual C - Estudiante

   
Vista:

Estudiante

Publicado por Billy Burgoa (1 intervención) el 01/09/2009 14:49:30
Hola a todos, esta es la primera vez que consulto a este foro. Muchas gracias por la oportunidad.
Mi problema es el siguiente....
Estoy realizando un programa en c para realizar la propagacion de ondas de acusticas en la atmosfera generadas por alguna fuente, por ejemplo una explosión. Para ello primeramente leo dos archivos cada uno tiene 150 datos de viento atmosferico y velocidad del sonido en la atmosfera. Cada uno de los valores leidos son del viento atmosferico a diferentes alturas en la atmosfera es decir desde 1 km de altura hasta 150 km de altura.
Luego de leerlos los utilizo con algunas ecuaciones para calcular el tiempo de viaje, distanca recorridas y otros parametros . Realizo un bucle de 1 a 150 para calcular estas ecuaciones a diferentes alturas, es decir para cada altura calculo el tiempo de viaje y lo voy sumando. Ahora el problema es que en las ecuaciones existen divisiones entre la raiz cuadrada de unos terminos que se hacen cero cuando llegan a una altura de por ejemplo 120 km. Esta altura donde se hace cero es el punto de retorno de la onda acustica a la superficie de la tierra. Entonces quiero realizar un algoritmo donde el programa reconozca este punto y comience a calcular de arriba para abajo y ya no continue calculando hacia arriba.
Espero que puedan ayudarme, sera que me sirve break; o continue;...?
muchas gracias.
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:Estudiante

Publicado por Paco (4 intervenciones) el 01/09/2009 21:14:28
La solución parece sencilla: Comienzas el bucle y vas haciendo los cálculos que necesites. Simplemente, lo que tienes que hacer es, en cada iteración, comprobar si esos términos son cero. Cuando esto ocurra, ejecuta break, el bucle finalizará inmediatamente. Algo así como:

for (i=1; i<=150; i++)
{
(calcular terminos)
if (terminos == 0) break;
(continuar procesado)
}
(continuar programa)

Cuando se cumple tu condición de salida, terminos==0, el bucle finaliza inmediatamente y el programa continua su ejecución en la primera línea de código posterior al bucle. Además, cuando ocurra esto, tendrás en i el valor de la altura en la que ocurre el retorno (será el valor activo del índice del bucle cuando se forzó su finalización) (suponiendo que el índice del bucle se corresponde con la altura, lo cual he dado por supuesto).

Si tienes alguna duda, no dudes en preguntar.

Un saludo,

PACO
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