0% encontró este documento útil (0 votos)
57 vistas5 páginas

El Restaurante .CPP

El documento presenta un programa en C++ para un sistema de pedidos en un restaurante, que incluye funciones para mostrar menús de entradas, platos fuertes, postres y bebidas. Utiliza un esquema de localización de información basado en un sistema de coordenadas para calcular el total del pedido. El flujo del programa permite al usuario seleccionar opciones y calcular el total a pagar al final.

Cargado por

saritavlo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
57 vistas5 páginas

El Restaurante .CPP

El documento presenta un programa en C++ para un sistema de pedidos en un restaurante, que incluye funciones para mostrar menús de entradas, platos fuertes, postres y bebidas. Utiliza un esquema de localización de información basado en un sistema de coordenadas para calcular el total del pedido. El flujo del programa permite al usuario seleccionar opciones y calcular el total a pagar al final.

Cargado por

saritavlo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

#include<iostream>

#include<string>
using namespace std;

#define Lineas_Por_Pagina 10 /* Esto se refiere a un dise�o "uniforme" u


"homogeneo" del libro
................................ o carta dentro de un Menu real impreso de un
restaurant del mundo real.
................................ ( De forma predeterminada se toman 10 lineas "por
pagina". )

.......... Esto se usa a modo de coordenadas dentro de los casos (cases) del
selector multiple (o switch) de la funcion
.......... calcularTotal(); Asi, si N=2 representa la pagina de los "platos
fuertes", y J=5 representa al "Risotto de champi�ones",
.......... entonces el caso correspondiente tendra por numero al "24" que es
calculado segun: N*10 + ( -1 + J )
..........
.......... Lo anterior es mera aplicacion de un esquema simple de localizacion de
la informacion, en analogia
.......... al esquema de direccionamiento SEGMENT-OFFSET ("segmentos y
desplazamientos"), utilizado por las computadoras
.......... para gestionar la memoria no-persistente. En tal caso, Lineas_Por_Pagina
(su valor constante), representaria por analogia
.......... al tama�o maximo que un segmento de la memoria puede tener, para un tipo
particular de computador o arquitectura. */

void mostrarBienvenida(void);
void leerNombre(string&);
void mostrarMenuEntradas(void);
void calcularTotal(float&, int);
void mostrarMenuPlatosFuertes();
void mostrarMenuPostres(void);
void mostrarMenuBebidas(void);
void mostrarTotal(string, float);
int seleccionarEntrada(int*);
int seleccionarPlatoFuerte(int&);
int seleccionarPostre(void);
int seleccionarBebida(int&);

int main() {
int opcion;
float total = 0.0;
string nombre;

mostrarBienvenida();
leerNombre(nombre);

mostrarMenuEntradas();
calcularTotal(total, seleccionarEntrada(&opcion));

mostrarMenuPlatosFuertes();
calcularTotal(total, seleccionarPlatoFuerte(opcion));

mostrarMenuPostres();
calcularTotal(total, seleccionarPostre());

mostrarMenuBebidas();
calcularTotal(total, seleccionarBebida(opcion));
mostrarTotal(nombre, total);
return 0;
}

/* ===========-----------------=============----------===============-------* /
Implementaciones completas de cada parte ( funcion o procedimiento):
/ * -------------==========----------------=============------------==========*/

void mostrarBienvenida(void)
{
cout << "\n\n.====================================.\n";
cout << "| BIENVENIDO AL RESTAURANTE DE ISAAC |\n";
cout << "*====================================*\n";
cout << " Por favor, ingrese su nombre: ";
}

void leerNombre(string &unNombre)


{
cin >> unNombre;
cout << "\nBienvenido(a), ";
cout << unNombre;
cout << "! Comencemos con tu pedido.";
}

void mostrarMenuEntradas(void)
{
cout << "\n\n.===========================.\n";
cout << "| MENU DE ENTRADAS |\n";
cout << "*===========================*\n";
cout << "1. Ensalada Cesar - $3.50\n";
cout << "2. Sopa del dia - $2.80\n";
cout << "3. Bruschetta - $4.20\n";
cout << "4. Calamares fritos - $5.00\n";
cout << "=============================\n";
cout << "Seleccione una entrada (1-4): ";
}

void mostrarMenuPlatosFuertes()
{
cout << "\n\n.===========================.\n";
cout << "| MENU DE PLATOS FUERTES |\n";
cout << "*===========================*\n";
cout << "1. Filete Mignon - $12.50\n";
cout << "2. Pollo a la Parrilla - $9.80\n";
cout << "3. Pasra Alfredo - $10.20\n";
cout << "4. Salmon al Limon - $14.00\n";
cout << "5. Risotto de Champi�ones - $11.50\n";
cout << "=============================\n";
cout << "Seleccione un plato fuerte (1-5): ";
}

void mostrarMenuPostres(void)
{
cout << "\n\n.===========================.\n";
cout << "| MENU DE POSTRES |\n";
cout << "*===========================*\n";
cout << "1. Cheesecake - $4.50\n";
cout << "2. Tiramisu - $5.00\n";
cout << "3. Flan - $3.00\n";
cout << "4. Helado - $3.50\n";
cout << "5. Brownie - $4.20\n";
cout << "=============================\n";
cout << "Seleccione un postre (1-5): ";
}

void mostrarMenuBebidas(void)
{
cout << "\n\n.===========================.\n";
cout << "| MENU DE BEBIDAS |\n";
cout << "*===========================*\n";
cout << "1. Refresco - $2.00\n";
cout << "2. Jugo Natural - $3.00\n";
cout << "3. Agua Mineral - $1.50\n";
cout << "============================\n";
cout << "Seleccione una bebida (1-3): ";

void mostrarTotal(string ElNombre, float Total_)


{
cout << "\n\n.===========================.\n";
cout << "| TOTAL A PAGAR |\n";
cout << ".===========================*\n";
cout << "| Total: " << Total_;
cout << "$ |\n";
cout << ".========================================.\n";
cout << "| Gracias por su compra " << ElNombre;
cout << ", Vuelva pronto. |\n";
cout << "*========================================*\n";
}

int seleccionarEntrada(int* OpcionSel)


{
cin >> *OpcionSel;
return 1*Lineas_Por_Pagina + (-1+*OpcionSel);
}

int seleccionarPlatoFuerte(int &OpcionSel)


{
cin >> OpcionSel;
return 2*Lineas_Por_Pagina + (-1+OpcionSel);
}

int seleccionarPostre(void)
{ // Basados en las imagines de captura de una corrida de
ejemplo que acompa�an al enunciado de esta practica,
int OpcionSel= 2; // Siempre se selecciona el tiramisu de acuerdo al dise�o
estricto para main() al cual hemos de apegarnos.
cout << "2\n";
return 3*Lineas_Por_Pagina + (-1+OpcionSel); // Se puede "arreglar" por
medio de variables globales, pero se desaconseja.
} // ... Es decir, opciom se usaria como variable global y asi
calcularTotal() podria "rescatar" la entrada del usuario.

int seleccionarBebida(int &OpcionSel)


{
cin >> OpcionSel;
return 4*Lineas_Por_Pagina + (-1+OpcionSel);
}

void calcularTotal(float &T_o_t_a_l, int Linea_Actual ) // Para


interpretacion de "Linea_Actual" ver comentario apendice.
{
float AsignacionActual= 0.0e0;
switch ( Linea_Actual ) // 1:4, 2:5, 3:5, 4:3, --> 10, 11, 12, 13, 20, 21,
22, 23, 24, 30, 31, 32, 33, 34, 40, 41, 42;
{

case 10:
AsignacionActual= +3.50e0;
break;

case 11:
AsignacionActual= +02.80e0;
break;

case 12:
AsignacionActual= +04.20e0;
break;

case 13:
AsignacionActual= +05.00e0;
break;

case 20:
AsignacionActual= +12.50e0;
break;

case 21:
AsignacionActual= +09.80e0;
break;

case 22:
AsignacionActual= +10.20e0;
break;

case 23:
AsignacionActual= +14.00e0;
break;

case 24:
AsignacionActual= +11.50e0;
break;

case 30:
AsignacionActual= +04.50e0;
break;

case 31:
AsignacionActual= +05.00e0;
break;

case 32:
AsignacionActual= +03.80e0;
break;
case 33:
AsignacionActual= +03.50e0;
break;

case 34:
AsignacionActual= +04.20e0;
break;

case 40:
AsignacionActual= +02.00e0;
break;

case 41:
AsignacionActual= +03.00e0;
break;

case 42:
AsignacionActual= +01.50e0;
break;

default: /* ....... En principio este default seria "inalcanzable"


............. si y solo si las funciones de seleccion para cada
pagina
............. del Menu fueron o estan correctamente implementadas!!
.............
............. Como no se admiten todavia estructuras de repeticion,
entonces
............. las entradas invalidas en cualquier seleccion han de
manjearse aqui
............. que es en donde realmente se tornan relevantes sus
"efectos".
. */
cout << "Opcion invalida, se asignara $0.00"; // ... Lo cual por cierto
ya esta -de hecho- realizado por la inicializacion.
}

T_o_t_a_l= T_o_t_a_l + AsignacionActual;

También podría gustarte