<!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>