[C con Clase] Duda con while y número centinela.
Sebastian Oldani
sebastianoldani en gmail.com
Dom Jun 8 01:39:59 CEST 2014
jaja, no lo veo como una aberración del lenguaje.
pero si queres tener un solo return podes reemplazar el "return 0;" que
esta adentro del if, por un "continue;" que hace lo que esperas que haga.
Para que lo tomes con calma te dejo esta frase:
“Si compila está bien, si echa a andar es perfecto.”
[Original: If it compiles, it is good, if it boots up it is perfect.]
―Linus Torvalds
Suerte.
El 07/06/14 17:44, Sebastián escribió:
> Buenas tardes a todos. Recientemente me interese por la programación
> orientada a objetos y sabiamente me recomendaron comenzar con lenguaje
> C. Descubrí que me apasiona este tipo de lenguaje.
> Necesito ayuda con el siguiente ejercicio:
>
> código en C:
> #include <stdio.h>
>
> /*
> * El objetivo es obtener el promedio de n kilometros por litro de
> combustible para cada tanque.
> * El promedio general de n kilometros por litro, obtenido de todos los
> tanques y salir.
> */
>
> int main(){
>
> float prom_T, prom_G, litros, total_litros=0;
> int kilometros, total_kilometros=0, contador=0, tanque=0;
>
> while(litros != -1){
> contador = ++tanque;
> printf("TANQUE %d: Ingrese los litros consumidos(ó -1): ", contador);
> scanf("%f", &litros);
>
> if(litros == -1){
> prom_G = total_kilometros / total_litros;
> printf("\n\nEl promedio gral. de K/L es: %.1f Kilometros",
> prom_G);
> return 0;
> }
>
> printf("..........Ingrese los kilometros recorridos: ");
> scanf("%d", &kilometros);
> prom_T = (float) kilometros / litros;
> printf("..........Los kilometros/litro para este tanque fueron:
> %.1f Kilometros\n\n", prom_T);
> total_litros = (float)total_litros + litros;
> total_kilometros = total_kilometros + kilometros;
>
> }
>
> return 0;
>
> }
>
> El programa hace lo que se le pide, para hacerlo me basé en algunos de
> los recursos aprendidos hasta el momento del mencionado ejercicio, es
> decir: el uso de la instrucción while, el uso del número centinela y el
> uso de la biblioteca estándar <stdio.h>. El problema es que para que
> funcione me vi obligado a anidar la función if dentro de while y
> escribir return 0 al final de if. De otro modo, cada vez que ingresaba
> el número centinela, el progrma me pedía ingresar los kilómetros
> recorridos y recién entonces mostraba el promedio general (resultado
> incorrecto) y salía. Sospecho que la solución que encontré es una
> aberración al lenguaje, un mal uso de las funciones while, if y return
> 0. Esta duda me mantiene bloqueado y hasta que no la despeje, no debo
> continuar.
>
> El ejercicio es el 3:17. Ejercicio 17 del capítulo 3 del manual
> "Como programar en C/C++" por H. M. Deitel y P. J. Deitel.
>
>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
Más información sobre la lista de distribución Cconclase