[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