Autor Tema: Ejercicio C# crear ticket cliente nombre cantidad litros importe modalidades id  (Leído 1958 veces)

bauty.mdq2281

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola, estoy apurado con este ejercicio.

Una estación de servicio quiere entregar un ticket por cliente en el que se detalle el nombre del cliente, la cantidad de combustible cargado (en litros) y el importe total gastado.

Cada cliente puede seleccionar dos modalidades de carga de combustibles:

1- Por capacidad, es decir, el cliente indica al playero cuantos litros de combustible desea cargar. Ej: 5 litros.

2-Por precio, es decir, el cliente indica al playero que le cargue un importe determinado.
Ej: $500 de combustible.

Además de la modalidad, el cliente indica qué tipo de combustible desea cargar, siendo las opciones: I- Infinia, S -Super, D-Diesel e ID-Infinia Diesel.

Una vez finalizada la carga de combustible, se imprimirá el ticket correspondiente.

Se pide:

A.   Codificar un programa que permita resolver el problema planteado. A saber:
a.   Deberá incluir dos métodos, uno que implemente la funcionalidad para la modalidad “Capacidad” a fin que devuelva el importe total gastado y otro método que implemente la funcionalidad para la modalidad “Precio” a fin que devuelva la cantidad de combustible cargado.
b.   La cantidad de clientes no se conocen a priori. El proceso finaliza al ingresar el nombre “ZZZ”.

Nota: El precio por litro para los distintos tipos de combustibles son:
I- $117,10; S-$101,60; D-$92,20 e ID-$112,80
 
Si me dan la respuesta les agradezco muchísimo.
« Última modificación: 13 de Enero 2022, 19:55 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil

SI ME DAN LA REPUESTA LES AGRADEZCO MUCHISIMO

¿Solo quieres eso? ¿La respuesta?
¿No quieres intentar aprender a resolverlo tú?

Si solo quieres la respuesta, aquí la tienes: https://onlinegdb.com/_ANwO9XD1

Si quieres intentarlo, no pinches en ese enlace. Olvídalo y ponte a escribir código.

Comienza por pequeños objetivos. Por ejemplo simplemente haz que el programa pida un nombre y se repita continuamente hasta que el nombre sea "ZZZ".

Una vez tengas eso, haz que además pida el tipo de combustible, indicando que introduzca "I", "S", "D" o "ID" según el tipo que quiera elegir.
Puedes usar un bucle o un método para hacer que esta petición se repita hasta que te de uno de esos 4 valores posibles.
O simplemente aceptar cualquier cosa que el usuario introduzca si de momento no quieres complicarlo más.

Después añade que introduzca la modalidad. Que teclee "P" si quiere hacerlo "por precio" o "C" si prefiere "por capacidad".
De nuevo, elige si quieres hacer que la petición se repita hasta asegurarte de que recibes uno de esos valores, o aceptar cualquier cosa que el usuario teclee sin validar nada.

Ahora añade un IF para comprobar que modalidad ha indicado.
Si es "C", pues pide al usuario los litros que desea. No hagas nada con ellos por ahora, de momento solo pídelos.
Si en cambio es "P", pues entonces pide el importe en dólares.

Llegados a este punto, habría que escribir y usar los métodos que calculan el importe según la capacidad indicada, o bien, calcula la capacidad según importe indicado.

Pero esto déjalo para después. De momento intenta, si quieres, conseguir todo lo que hemos comentado.

Y si solo quieres la respuesta, pues la tienes en ese enlace que te he puesto.
Tú decides.
Un saludo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

bauty.mdq2281

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Pongo mi código:

Código: [Seleccionar]
namespace Examen
{
    class Program

    {

        static void Main(string[] args)
        {

            double PorPrecio(double num1, double num2)
            {
                double resultado = num1 / num2;
                return resultado;
            }



            double PorLitro(double num1, double num2)
            {
                double resultado = num1 * num2;
                return resultado;
            }
           

            Console.WriteLine("·EXAMEN 1·");

           
            Console.WriteLine("·Ingrese el nombre del cliente; 'ZZZ' finaliza el programa·");
            string cliente = Console.ReadLine();
            cliente = cliente.ToUpper();
            Console.Clear();

            double litros, plata;

            while (cliente != "ZZZ")
            {
                Console.WriteLine("·Por cual modalidad desea cargar·\n" +
                    "1- Por litro.\n" +
                    "2- Por precio.");
                int mod = Convert.ToInt32(Console.ReadLine());

                if (mod == 1)
                {
                    Console.WriteLine("·Tipo de combustible·\n" +
                        " I- Infinia.\n S -Super.\n D-Diesel.\n ID-Infinia Diesel");
                    string combustible = Console.ReadLine();
                    combustible = combustible.ToUpper();

                    Console.WriteLine("Ingrese la cantidad de litros de combustible que desee");
                    litros = Convert.ToDouble(Console.ReadLine());

                    switch (combustible)
                    {
                        case "I":
                            {
                                Console.WriteLine($"ticket\nNombre: {cliente}\nCombustible: {litros} Lts. \nImporte total: ${PorLitro(litros, 117.10)}");

                                break;
                            }
                        case "S":
                            {
                                Console.WriteLine($"ticket\nNombre: {cliente}\nCombustible: {litros} Lts. \nImporte total: ${PorLitro(litros, 101.6)}");

                                break;
                            }
                        case "D":
                            {
                                Console.WriteLine($"ticket\nNombre: {cliente}\nCombustible: {litros} Lts. \nImporte total: ${PorLitro(litros, 92.2)}");

                                break;
                            }
                        case "ID":
                            {
                                Console.WriteLine($"ticket\nNombre: {cliente}\nCombustible: {litros} Lts. \nImporte total: ${PorLitro(litros, 112.8)}");

                                break;
                            }
                        default:
                            {
                                Console.WriteLine($"¡ERROR! Intente devuelta devuelta porfavor");
                                break;
                            }
                    }


                }
                else if (mod == 2)
                {
                    Console.WriteLine("·Tipo de combustible·\n" +
                        " I- Infinia.\n S -Super.\n D-Diesel.\n ID-Infinia Diesel");
                    string comb = Console.ReadLine();
                    comb = comb.ToUpper();

                    Console.WriteLine("Ingrese el la cantidad de dinero");
                    plata = Convert.ToDouble(Console.ReadLine());

                    switch (comb)
                    {
                        case "I":
                            {
                                Console.WriteLine($"ticket\nNombre: {cliente}\nCombustible: {PorPrecio(plata, 117.10)} Lts. \nImporte total: ${plata}");

                                break;
                            }
                        case "S":
                            {
                                Console.WriteLine($"ticket\nNombre: {cliente}\nCombustible: {PorPrecio(plata, 101.60)} Lts. \nImporte total: ${plata}");

                                break;
                            }
                        case "D":
                            {
                                Console.WriteLine($"ticket\nNombre: {cliente}\nCombustible: {PorPrecio(plata, 92.2)} Lts. \nImporte total: ${plata}");

                                break;
                            }
                        case "ID":
                            {
                                Console.WriteLine($"ticket\nNombre: {cliente}\nCombustible: {PorPrecio(plata, 112.8)} Lts. \nImporte total: ${plata}");

                                break;
                            }
                    }

                }
                else Console.WriteLine("¡ERROR! Intente otra vez porfavor");

                Console.WriteLine("·Ingrese el nombre del cliente; 'ZZZ' finaliza el programa·");
                cliente = Console.ReadLine();
                cliente = cliente.ToUpper();


¿Está bien asi?
« Última modificación: 13 de Enero 2022, 19:53 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Los métodos se han de declarar fuera del método main, no dentro:

Citar
        static void Main(string[] args)
        {

            double PorPrecio(double num1, double num2)
            {
                double resultado = num1 / num2;
                return resultado;
            }




            double PorLitro(double num1, double num2)
            {
                double resultado = num1 * num2;
                return resultado;
            }

Y los declarar también static, igual que el main, para que puedan invocarse directamente sin tener que instanciar ningún objeto.

Luego prueba tu mismo a ejecutarlo, a ver si funciona o no.

Luego puedes comparar con el código que puse. Yo le di un enfoque algo distinto, por ejemplo a los métodos les hago llegar el tipo de combustible para que sean ellos los que hagan el switch.
Pero en esencia ambas soluciones son muy similares.

Por cierto, voy a poner aquí el código porque el enlace que puse tarde o temprano caducará.

Código: [Seleccionar]
using System;

namespace EstacionServicio
{
    class Program
    {
        static class Precios
        {
            //Dolares por litro
            public const float Infinia = 117.1f;
            public const float Super = 101.6f;
            public const float Diesel = 92.2f;
            public const float InfiniaDiesel = 112.8f;
        }
        static void Main(string[] args)
        {
           

            string nombre = "";

            while (!nombre.Equals("ZZZ"))
            {
                Console.Write("Nombre Cliente: ");
                nombre = Console.ReadLine();
                if (!nombre.Equals("ZZZ"))
                {
                    float importe, capacidad;
                    string tipoCombustible = PedirTipoCombustible();
                    string modalidad = PedirModalidad();

                    if (modalidad.Equals("C"))
                    {
                        Console.Write("\nIndique capacidad deseada en litros: ");
                        capacidad = float.Parse(Console.ReadLine());
                        importe = PorCapacidad(capacidad, tipoCombustible);
                    }
                    else
                    {
                        Console.Write("\nIndique el importe en dolares: ");
                        importe = float.Parse(Console.ReadLine());
                        capacidad = PorPrecio(importe, tipoCombustible);
                    }

                    //Detallamos tiquet
                    Console.Clear();
                    Console.WriteLine("\t\tTIQUET OPERACION");
                    Console.WriteLine("Nombre: {0}", nombre);
                    Console.WriteLine("Tipo Combustible: {0}", tipoCombustible);
                    Console.WriteLine("Combustible cargado(litros): {0}", capacidad.ToString("0.##"));
                    Console.WriteLine("Importe Total: {0}", importe.ToString("0,0.00"));
                    Console.ReadKey();
                    Console.Clear();
                }
            }
           
        }

        static string PedirTipoCombustible()
        {
            string[] tipos = new string[] { "I", "S", "D", "ID" };
            string tipo = "";
            bool repetir = true;
            while (repetir)
            {
                Console.WriteLine("\n[I] -- Infinia");
                Console.WriteLine("[S] -- Super");
                Console.WriteLine("[D] -- Diesel");
                Console.WriteLine("[ID] -- InfiniaDiesel");
                Console.Write("Elija tipo: ");
                tipo = Console.ReadLine().ToUpper();
                //Si el tipo introducido consta en el array de posibles tipos, el bucle termina
                if (Array.Exists(tipos, x => x == tipo))
                    repetir = false;
            }

            return tipo;
        }

        static string PedirModalidad()
        {
            string modo = "";

            while (!modo.Equals("C") && !modo.Equals("P"))
            {
                Console.WriteLine("\n[C] -- Por Capacidad");
                Console.WriteLine("[P] -- Por Precio");
                Console.Write("Elija modalidad: ");
                modo = Console.ReadLine().ToUpper();
            }

            return modo;
        }

        static float PorCapacidad(float litros, string tipo)
        {
            switch(tipo)
            {
                case "I":
                    return litros * Precios.Infinia;
                case "S":
                    return litros * Precios.Super;
                case "D":
                    return litros * Precios.Diesel;
                case "ID":
                    return litros * Precios.InfiniaDiesel;
                default:
                    return 0;
            }
        }

        static float PorPrecio(float importe, string tipo)
        {
            switch (tipo)
            {
                case "I":
                    return importe / Precios.Infinia;
                case "S":
                    return importe / Precios.Super;
                case "D":
                    return importe / Precios.Diesel;
                case "ID":
                    return importe / Precios.InfiniaDiesel;
                default:
                    return 0;
            }
        }
    }
}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".