[C con Clase] Duda con while y número centinela.
Sebastián
toledanosebastian en gmail.com
Sab Jun 7 22:44:52 CEST 2014
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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140607/e9943a51/attachment.html>
Más información sobre la lista de distribución Cconclase