<div dir="ltr"><div><div>Muy buenas tardes Sebastián, revisando tu código no encuentro nada extraño, lo que pasa es que quizas hay un detalle que no contemplaste, pues cuando te pide los litros y tu le tecleas -1, si el centinela no existiera entonces ejecutaria las demas sentencias calculando en este caso el promedio en listros de este tanque, y el resto de almacenamientos que realizas, y vendria terminando hasta el siguiente ciclo, es decir sin ese centinela ejecutas un ciclo de más, es por eso que tambien los resultados no salen bien cuando lo quitas.<br>
<br></div><div>Lo que te aconsejo para que te quede mas claro, es que tomes un ejemplo con 2 tanques y despues termines con -1, pero lo realices a mano y sentencia a sentencia como lo hace la computadora, así te quedaria mas claro.<br>
<br></div><div>Espero me haberme explicado bien, saludos.<br><br></div><div>Julio Cesar.<br></div><div><br><br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">El 7 de junio de 2014, 15:44, Sebastián <span dir="ltr"><<a href="mailto:toledanosebastian@gmail.com" target="_blank">toledanosebastian@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>


  
  

<div>
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>
  
</div>

<br>_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br></blockquote></div><br></div>