Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: hugg en 14 Enero 2011, 23:51 pm



Título: problema con ejercicio en C ayuda!!!
Publicado por: hugg en 14 Enero 2011, 23:51 pm
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
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5.  
  6. {
  7. float litros;
  8. float km_por_litro,litros_y_km_portanque, total_litros, total_km, total_promedio, contador; // declaro variables
  9. litros_y_km_portanque = km_por_litro / litros; // asigno valores
  10. total_promedio = total_km / total_litros; //
  11.  
  12. printf(" introduzca los litros utilizados (escriba -1 para terminar): "); // se solicita dar los datos
  13. scanf("%f", &litros); // asigna el valor a la variable litros
  14.  
  15. printf(" escribe la cantidad de km: "); // pide valores
  16. scanf("%f", &km_por_litro); // asigna valores km por litro
  17.  
  18. litros_y_km_portanque = km_por_litro / litros; // asigno valores
  19.  
  20. printf(" el promedio de kilometros por litro de este tanque es: %.3f\n", litros_y_km_portanque); // resultado de km/litro
  21.  
  22. while(litros!=-1) // comienza el ciclo mientras litros o km/litro sea distinto que -1 (centinela)
  23. { // continua
  24.  
  25. printf(" introduzca los litros utilizados (escriba -1 para terminar): ");
  26. scanf("%f", &litros);
  27.  
  28. printf(" escribe la cantidad de km: ");
  29. scanf("%f", &km_por_litro);
  30.  
  31. litros_y_km_portanque = km_por_litro / litros;
  32.  
  33. printf(" el promedio de kilometros por litro de este tanque es: %.3f\n", litros_y_km_portanque);
  34.  
  35. total_litros += litros;
  36. total_km += km_por_litro;
  37. }
  38. if(litros > 0)
  39. {
  40. total_promedio = total_km / total_litros;
  41.  
  42. printf(" el total promedio de km//litro es: %.3f\n" , total_promedio ); // si se imprimio por lo menos un valor
  43. } // saca el promedio general de km/
  44. system("pause");
  45.  
  46. return 0;
  47. }
  48.  
  49.  


Título: Re: problema con ejercicio en C ayuda!!!
Publicado por: leogtz en 15 Enero 2011, 00:29 am
La secuencia del programa es incorrecta. Mira esto:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(void)
  4. {
  5.    float litros;
  6.    float km_por_litro,litros_y_km_portanque, total_litros, total_km, total_promedio, contador; // declaro variables
  7.    litros_y_km_portanque = km_por_litro / litros; // asigno valores
  8.    total_promedio = total_km / total_litros; //
  9.  
  10.    printf(" introduzca los litros utilizados (escriba -1 para terminar): "); // se solicita dar los datos
  11.    scanf("%f", &litros); // asigna el valor a la variable litros
  12.  
  13.    while(litros != -1) // comienza el ciclo mientras litros o km/litro sea distinto que -1 (centinela)
  14.    { // continua
  15.  
  16.        printf(" escribe la cantidad de km: ");
  17.        scanf("%f", &km_por_litro);
  18.  
  19.        litros_y_km_portanque = km_por_litro / litros;
  20.  
  21.        printf(" el promedio de kilometros por litro de este tanque es: %.3f\n", litros_y_km_portanque);
  22.  
  23.        total_litros += litros;
  24.        total_km += km_por_litro;
  25.  
  26.        printf(" introduzca los litros utilizados (escriba -1 para terminar): "); // se solicita dar los datos
  27.        scanf("%f", &litros); // asigna el valor a la variable litros
  28.  
  29.    }
  30.    if(litros > 0)
  31.    {
  32.        total_promedio = total_km / total_litros;
  33.        printf(" el total promedio de km//litro es: %.3f\n" , total_promedio ); // si se imprimio por lo menos un valor
  34.    } // saca el promedio general de km/
  35.    while(getchar() != '\n');
  36.    getchar();
  37.  
  38.    return 0;
  39. }
  40.  


Título: Re: problema con ejercicio en C ayuda!!!
Publicado por: hugg en 15 Enero 2011, 02:33 am
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.

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


Título: Re: problema con ejercicio en C ayuda!!!
Publicado por: leogtz en 15 Enero 2011, 03:32 am
Edita tu mensaje y usa comas. Así se podrá entender.