<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/4.4.4">
</HEAD>
<BODY>
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. <BR>
Necesito ayuda con el siguiente ejercicio:<BR>
<BR>
código en C:<BR>
#include <stdio.h><BR>
<BR>
/*<BR>
* El objetivo es obtener el promedio de n kilometros por litro de combustible para cada tanque.<BR>
* El promedio general de n kilometros por litro, obtenido de todos los tanques y salir.<BR>
*/<BR>
<BR>
int main(){<BR>
<BR>
float prom_T, prom_G, litros, total_litros=0;<BR>
int kilometros, total_kilometros=0, contador=0, tanque=0;<BR>
<BR>
while(litros != -1){<BR>
contador = ++tanque;<BR>
printf("TANQUE %d: Ingrese los litros consumidos(ó -1): ", contador);<BR>
scanf("%f", &litros);<BR>
<BR>
if(litros == -1){<BR>
prom_G = total_kilometros / total_litros;<BR>
printf("\n\nEl promedio gral. de K/L es: %.1f Kilometros", prom_G);<BR>
return 0;<BR>
}<BR>
<BR>
printf("..........Ingrese los kilometros recorridos: ");<BR>
scanf("%d", &kilometros);<BR>
prom_T = (float) kilometros / litros;<BR>
printf("..........Los kilometros/litro para este tanque fueron: %.1f Kilometros\n\n", prom_T);<BR>
total_litros = (float)total_litros + litros;<BR>
total_kilometros = total_kilometros + kilometros;<BR>
<BR>
}<BR>
<BR>
return 0;<BR>
<BR>
} <BR>
<BR>
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.<BR>
<BLOCKQUOTE>
<BLOCKQUOTE>
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. <BR>
</BLOCKQUOTE>
</BLOCKQUOTE>
<BR>
</BODY>
</HTML>