problema con ejercicio en C ayuda!!!

Iniciado por hugg, 14 Enero 2011, 23:51 PM

0 Miembros y 1 Visitante están viendo este tema.

hugg

hola a todos primero que nada una felicitacion por el foro esta buenisimo aki eh aprendido muchas cosas pero bueno quisera que me ayudaran estoy comenzando a aprender a programar en c y me estoy leyendo el libro de deitel & deitel y estoy escribiendo unpo de los ejercicios se que puede ser algo muy sencillo y tonto para ustedes pero es que voy empexando y estoy atrapado con un while controlado por centinela escribo el centinela para que se rompa el ciclo pero no lo hace sigue repitiendose estoy cxompilando en dev-c++ miren aki esta el codigo
#include <stdio.h>
#include <stdlib.h>

int main()

{
float litros;
float km_por_litro,litros_y_km_portanque, total_litros, total_km, total_promedio, contador; // declaro variables
litros_y_km_portanque = km_por_litro / litros; // asigno valores
total_promedio = total_km / total_litros; //

printf(" introduzca los litros utilizados (escriba -1 para terminar): "); // se solicita dar los datos
scanf("%f", &litros); // asigna el valor a la variable litros

printf(" escribe la cantidad de km: "); // pide valores
scanf("%f", &km_por_litro); // asigna valores km por litro

litros_y_km_portanque = km_por_litro / litros; // asigno valores

printf(" el promedio de kilometros por litro de este tanque es: %.3f\n", litros_y_km_portanque); // resultado de km/litro

while(litros!=-1) // comienza el ciclo mientras litros o km/litro sea distinto que -1 (centinela)
{ // continua

printf(" introduzca los litros utilizados (escriba -1 para terminar): ");
scanf("%f", &litros);

printf(" escribe la cantidad de km: ");
scanf("%f", &km_por_litro);

litros_y_km_portanque = km_por_litro / litros;

printf(" el promedio de kilometros por litro de este tanque es: %.3f\n", litros_y_km_portanque);

total_litros += litros;
total_km += km_por_litro;
}
if(litros > 0)
{
total_promedio = total_km / total_litros;

printf(" el total promedio de km//litro es: %.3f\n" , total_promedio ); // si se imprimio por lo menos un valor
} // saca el promedio general de km/
system("pause");

return 0;
}


leogtz

La secuencia del programa es incorrecta. Mira esto:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    float litros;
    float km_por_litro,litros_y_km_portanque, total_litros, total_km, total_promedio, contador; // declaro variables
    litros_y_km_portanque = km_por_litro / litros; // asigno valores
    total_promedio = total_km / total_litros; //

    printf(" introduzca los litros utilizados (escriba -1 para terminar): "); // se solicita dar los datos
    scanf("%f", &litros); // asigna el valor a la variable litros

    while(litros != -1) // comienza el ciclo mientras litros o km/litro sea distinto que -1 (centinela)
    { // continua

        printf(" escribe la cantidad de km: ");
        scanf("%f", &km_por_litro);

        litros_y_km_portanque = km_por_litro / litros;

        printf(" el promedio de kilometros por litro de este tanque es: %.3f\n", litros_y_km_portanque);

        total_litros += litros;
        total_km += km_por_litro;

        printf(" introduzca los litros utilizados (escriba -1 para terminar): "); // se solicita dar los datos
        scanf("%f", &litros); // asigna el valor a la variable litros

    }
    if(litros > 0)
    {
        total_promedio = total_km / total_litros;
        printf(" el total promedio de km//litro es: %.3f\n" , total_promedio ); // si se imprimio por lo menos un valor
    } // saca el promedio general de km/
    while(getchar() != '\n');
    getchar();

    return 0;
}
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

hugg

#2
muchisimas gracias ya entendi al escribir al final en la variable litros el valor -1 while comprueba que la condicion aun no se cumpla en cuyo caso sigue y de lo contrario termina el bucle muchas gracias de verdad me estaba rompiendo la cabeza oye
  :huh: :huh: :huh: :huh: pero tengo otra duda mas bueno en realidad son dos si me pudieras explicar, se termina el bucle (while) al escribir el valor centinela pero no me ejecuta la segunda condicion "if" para imprimir el promedio general, simplemente termina el programa :huh: :huh: :huh: :huh: y la otra duda: entiendo que se sustituye system() por getchar() por razones de rendimiento pero no me queda claro para que usas antes while(getchar() != '\n') de antemano gracias.

----->
Citarif(litros > 0)
{
total_promedio = total_km / total_litros;

printf(" el total promedio de km//litro es: %.3f\n" , total_promedio ); // si se imprimio por lo menos un valor
} // saca el promedio general de km/

leogtz

Edita tu mensaje y usa comas. Así se podrá entender.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com