[ Foro de C++ ]

Restaurante en C++

08-Aug-2020 01:03
Invitado (chefcurry)
1 Respuestas

Tengo el siguiente código de un restaurante, pero no me ejecuta la función pago y me marca error.


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

using namespace std;

void separador (char ch );
void saludo ();
int menu ();
void entradas();
void platof();
void postres();
void bebidas();
void volver();
void pago(float cuenta);


int main(){
    saludo () ;
    menu() ;
    return 0;
}

void separador ( char ch ){
    int x ;
    for ( x = 1 ; x <= 35 ; x++ ){
        cout << ch ;
    }
}
void saludo (){
    separador ('=') ;
    cout << endl << " === Toulouse Restaurant ===" << endl ;
    separador ('=') ;
    cout << endl << endl ;
}
int menu(){
    char opcion ;

    printf("Estos son nuestros tiempos: \n\n");

    cout << "         1. Entradas                " << endl ;
    cout << "         2. Plato Fuerte            " << endl ;
    cout << "         3. Postres                 " << endl ;
    cout << "         4. Bebidas                 " << endl ;

    cout << endl << "Cual desea observar? " ;
    cin >> opcion ;

    switch (opcion){
    case '1':
        system("cls");
        entradas();
    break;
    case '2':
        system("cls");
        platof();
    break;
    case '3':
        system("cls");
        postres();
    break;
    case'4':
        system("cls");
        bebidas();
    break;
    default:
        cout << endl << "Valor incorrecto, intente de nuevo " << endl ;
    }
    volver();

     return opcion ;
    }
    void entradas(){

            int op1, orden;
            float cuenta = 0;

            cout << endl << "################### ENTRADAS #####################" << endl << endl ;

            cout << "1. Ensalada de Nopalitos                      $40   " << endl ;
            cout << "2. Crema de Aguacate al Tequila               $50 " << endl ;
            cout << "3. Tostaditas de Queso de Cabra y Tomate      $40" << endl ;
            cout << "4. Frijoles Rancheros                         $35   "<< endl ;

            cout << endl << "¿Que entrada desea? " ;
            cin >> op1 ;

            cout << endl << "Cuantas ordenes desea? " ;
            cin >> orden ;

            switch(op1){
            case 1:
                cuenta = 40 * orden ;
                cout << endl << "    Subtotal: $" << cuenta << endl;
            break;
            case 2:

                cuenta = 50 * orden ;
                cout << endl << "    Subtotal: $" << cuenta << endl;

            break;
            case 3:

              cuenta = 40 * orden ;
              cout << endl << "    Subtotal: $" << cuenta << endl;
            break;
            case 4:
                cuenta = 35 * orden ;
                cout << endl << "    Subtotal: $" << cuenta << endl;
            break;
            default:
            cout << endl << "Valor incorrecto, intente de nuevo " << endl ;
            }
    }
    void platof (){

        int op2, enchiladas, cochinita, kilos, orden ;
        float cuenta = 0;

    cout << endl << "################ PLATO FUERTE ##################" << endl << endl ;

    cout << "1. Cerdo en Salsa Verde                       $80              " << endl ;
    cout << "2. Enchiladas (Suizas, verdes, Rojas)         $120/$95/$95     " << endl ;
    cout << "3. Cochinita Pibil (Orden de Tacos/Kilos)     $75/$300         " << endl ;
    cout << "4. Mole Poblano                               $80              "<< endl ;
    cout << "5. Pozole (Rojo, Blanco, Verde                $90              "<< endl ;
    cout << "6. Chiles Rellenos                            $80              "<< endl ;
    cout << endl << "¿Que platillo desea? " ;
    cin >> op2 ;

        switch(op2){
            case 1:
        cout << endl << "Cuantas ordenes desea? " ;
        cin >> orden ;
        cuenta = 80 * orden ;
        cout << endl << "    Subtotal: $" << cuenta << endl;
        break;
            case 2:
        cout << endl << "De cuales enchiladas desea?" << endl ;

        cout << "1. Suizas    $120   " << endl ;
        cout << "2. Rojas     $95    " << endl ;
        cout << "3. Verdes    $95    " << endl ;
        cin >> enchiladas ;

        cout << "Cuantas ordenes desea? " << endl ;
        cin >> orden ;

        switch(enchiladas){
            case 1:
            cuenta = 120 * orden ;
            cout << endl << "    Subtotal: $" << cuenta << endl;
            break;
            case 2:
                cuenta = 95 * orden ;
                cout << endl << "    Subtotal: $" << cuenta << endl;
            break;
            case 3:
                cuenta = 95 * orden ;
                cout << endl << "    Subtotal: $" << cuenta << endl;
            break;
            default:
                cout << endl << "Valor incorrecto, intente de nuevo " << endl ;
        }
        break;
            case 3:
            cout << "Que desea? "<< endl ;

            cout << "1. Orden de Tacos (4/orden)   $75  " << endl ;
            cout << "2. Por Kilo                   $300 " << endl ;
            cin >> cochinita ;

            switch(cochinita){
            case 1:
                cuenta = 75 * orden ;
                cout << endl << "    Subtotal: $" << cuenta << endl;
            break;
            case 2:
                cout << "Cuantos kilos desea? (Ingresar valor en kg) " << endl ;
                cin >> kilos ;

                cuenta = 300 * kilos ;
                cout << endl << "    Subtotal: $" << cuenta << endl;
                break;
            default:
                cout << endl << "Valor incorrecto, intente de nuevo " << endl;
            }
        case 4:
             cout << endl << "Cuantas ordenes desea? " ;
            cin >> orden ;
            cuenta = 80 * orden ;
            cout << endl << "    Subtotal: $" << cuenta << endl;
        break;
        case 5:
            cout << endl << "Cuantas ordenes desea? " ;
            cin >> orden ;
            cuenta = 90 * orden ;
            cout << endl << "    Subtotal: $" << cuenta << endl;
        break;
        case 6:
            cout << endl << "Cuantas ordenes desea? " ;
            cin >> orden ;
            cuenta = 80 * orden ;
            cout << endl << "    Subtotal: $" << cuenta << endl;
        break;
        default:
            cout << endl << "Valor incorrecto, intente de nuevo " << endl ;
        }
    }
    void postres(){
        int op3, orden;
        float cuenta = 0;

    cout << endl << "################ POSTRES ####################" << endl << endl ;

    cout << "1. Pastel                              $35              " << endl ;
    cout << "2. Brownies con Helado                 $15    " << endl ;
    cout << "3. Flan Napolitano                     $35         " << endl ;
    cout << "4. Gelatina de Mosaico                 $25              "<< endl ;

    cout << endl << "¿Que postre desea? " ;
    cin >> op3 ;

    cout << endl << "Cuantas ordenes desea? " ;
    cin >> orden ;

    switch(op3){
    case 1:
        cuenta = 35 * orden ;
        cout << endl << "    Subtotal: $" << cuenta << endl;
    break;
    case 2:
        cuenta = 15 * orden ;
        cout << endl << "    Subtotal: $" << cuenta << endl;
    break;
    case 3:
        cuenta = 35 * orden ;
        cout << endl << "    Subtotal: $" << cuenta << endl;
    break;
    case 4:
        cuenta = 25 * orden ;
        cout << endl << "    Subtotal: $" << cuenta << endl;
    break;
    default:
            cout << endl << "Valor incorrecto, intente de nuevo " << endl ;
    }
    }
    void bebidas(){

            int op4, orden;
            float cuenta = 0;

    cout << endl << "################ BEBIDAS ####################" << endl << endl ;

    cout << "1. Refresco                   $20              " << endl ;
    cout << "2. Agua Fresca                $25    " << endl ;

    cout << endl << "¿Que bebida desea? " ;
    cin >> op4 ;

    cout << endl << "Cuantas desea? " ;
    cin >> orden ;

            switch(op4){
                cin >> cuenta;
        case 1:
            cuenta = 20 * orden ;
            cout << endl << "    Subtotal: $" << cuenta << endl;
        break;
        case 2:
            cuenta = 25 * orden ;
            cout << endl << "    Subtotal: $" << cuenta << endl;
        break;
        default:
            cout << endl << "Valor incorrecto, intente de nuevo " << endl ;
        }
    }
    void volver(){
    int volver;
    cout << endl << "Desea seguir ordenando?" << endl;
    cout << "1. Si " << endl ;
    cout << "2. No " << endl ;
    cin >> volver ;

        if (volver == 1){
        system("cls");
        void separador( char ch);
        saludo();
        menu();
        }
        if (volver == 2){
        pago(cuenta);
        }
    }
    void pago(float cuenta){
    float subtotal = 0, total = 0, IVA;

    system("cls");
    subtotal += cuenta;
    IVA = (16 * subtotal) / 100 ;
    total = subtotal + IVA ;

    cout << endl << "   IVA (16%): $" << IVA ;
    cout << endl << "    Subtotal: $" << subtotal ;
    cout << endl << "       Total: $" << total ;
    }


 


08-Aug-2020 10:02
Nacho Cabanes (+84)

Para empezar, no dices qué compilador y qué sistema operativo empleas, pero estás usando características no estándar, como "conio.h", que es de los antiguos compiladores de Borland para MS-DOS.

Para seguir, los mensajes de error son tus amigos: si comento la línea, de "conio.h", el error que yo obtengo es:

main.cpp:294:14: error: use of undeclared identifier 'cuenta'
       pago(cuenta);

Y es un mensaje de error muy claro. En la línea 294, dentro de la función "volver", tienes un "pago(cuenta)", pero no existe esa variable "cuenta".  Lo esperable será algo como un "pago(100)" , para llamar a la función "pago" pero indicándole ciertos valores (sean valores directos o sean variables).

Pero tienes más errores. Unas pocas líneas antes tienes un "void separador( char ch);" dentro de una función, que tampoco sé qué pinta ahí.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)