<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">El 7 de junio de 2014, 16:14, 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:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style: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></div></blockquote><div><br>
</div><div>Hola bienvenido</div><div>No es correcto C no es orientado a objetos debería ser C++ este código que muestras es programación estructurada no POO</div><div><br></div><div>No veo nada malo en tu programa lo importante es que resolviste el problema tu mismo y cualquier mejora te la dará la experiencia, y la curiosidad que demuestras. Mientras tanto permíteme felicitarte.<br>
</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
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>
</div></blockquote><div><br></div><div>No soy experto pero el uso del if creo que es inevitable porque lees dos veces del teclado dentro del while y tienes que parar inmediatamente </div><div>aunque yo lo hubiese hecho un poco diferente tal vez un break y esto fuera del bucle</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div>      <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></div></blockquote><div>o tal vez un if aquí para no leer más del teclado si se introdujo la bandera</div><div>             if(litros >=0){ </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div>
      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>
</div></blockquote><div>                  } </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>      <br>
</div></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
   }<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.   </blockquote></blockquote></div></blockquote><div><br></div><div>Sólo continúa adelante y métete más en C++ </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><blockquote><blockquote>       </blockquote></blockquote>
</div></blockquote></div></div></div>