• Jueves 25 de Abril de 2024, 05:47

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - nachete_222

Páginas: [1]
1
C/C++ / consulta sobre un problema en C++
« en: Lunes 10 de Marzo de 2014, 22:37 »
En un problema de programación se proporciona el siguiente enunciado y un ejemplo de la ejecución del mismo.

--- enunciado del problema ---

2.16

Los conductores están preocupados por el kilometraje recorrido por sus automóviles. Un conductor ha dado seguimiento a varios tanques de gasolina, registrando los kilómetros recorridos y los litros utilizados en ese recorrido. Desarrolle un programa en C++ que utilice una estructura while, para introducir los kilómetros recorridos y los litros utilizados de cada tanque. El programa debe calcular y desplegar los kilómetros por litro, obtenidos de cada tanque. Después de procesar toda la información de entrada, el programa debe calcular y desplegar la combinación de kilómetros por litro obtenidos por todos los tanques.

--- resultado de ejecución ---

Introduzca los litros utilizados (-1 en adelante): 12.8
Introduzca los kilometros recorridos: 287
Los kilometros / litro para este tanque fueron 22.421875

Introduzca los litros utilizados (-1 en adelante): 10.3
Introduzca los kilometros recorridos: 200
Los kilometros / litro para este tanque fueron 19.417476

Introduzca los litros utilizados (-1 en adelante): 5
Introduzca los kilometros recorridos: 120
Los kilometros / litro para este tanque fueron 24.000000

Introduzca los litros utilizados (-1 en adelante): -1

El promedio total de kilometros/litro fue de 21.601423


He desarrollado este código para resolver el problema...

Código: [Seleccionar]
// Ej. 2.16: ej02_16.cpp
// Calcular los kilometros recorridos por litro y el promedio
#include <iostream>

using std::cout;
using std::cin;
using std::endl;
using std::fixed;

#include <iomanip>

using std::setprecision;

// la función main comienza la ejecución del programa
int main()
{
double distancia;     // declara distancia
double litros;        // declara litros
double resultado;     // declara resultado
double totalkms = 0;  // declara kilometros totales
double totLitros = 0; // inicializa total litros

while ( litros != -1 ) {
// indica la entrada y obtiene el valor a partir del usuario (litros)
// -1 para terminar el ciclo while
cout << "Introduzca los litros utilizados (-1 en adelante): ";
cin >> litros;

if ( litros == -1 ) // comprueba si la entrada es -1
    break; // se salta el bloque "else" si la entrada fue -1
   
else { // si la entrada no fue -1 continua con este bloque
// indica entrada y obtiene valor del usuario (kilometros recorridos)
    cout << "Introduzca los kilometros recorridos: ";
    cin >> distancia;

    resultado = distancia / litros; // calcula los kilometros por litro
    totLitros += litros;            // calcula el total de litros consumido
    totalkms += distancia;          // calcula el total de distancia recorrida
   
    // despliega resultados por tanque
    cout << fixed << setprecision ( 6 );
    cout << "Los kilometros / litro para este tanque fueron " << resultado
         << "\n" << endl;
}

} // fin de while

// despliega el promedio a partir de las variables "totLitros" y "totalkms"
cout << "\nEl promedio total de kilometros/litro fue de "
     << totalkms / totLitros << endl;

return 0; // indica terminación exitosa

} // fin de la función main

Al crear el programa me han surgido unas dudas respecto a la estructura "if", ya que comprueba por segunda vez si el valor centinela se ha introducido, para evitar el bloque despues de "else".

Se comprueba como condición en la estructura "while" para terminar la ejecución del programa y también en "if" para evitar que sume el valor -1 a los litros e introduzca errores en el calculo del promedio, y la pregunta es, ¿si esto es necesario o existe una forma mejor de hacerlo?

Un saludo,
Nacho

Páginas: [1]