Case label '#' not within a switch statement

Iniciado por mistaiker, 27 Agosto 2011, 15:07 PM

0 Miembros y 1 Visitante están viendo este tema.

mistaiker

Hola a todos y desde ya muchas gracias por leer.
Practicando un programmilla en c++ no me toma los case, y lo revise y lo compare
con el original y no le veo el error

//Simulacion de una calculadora

//Preprosesador
#include <iostream>
#include <limits>

using namespace std;

//Declaracion de funciones
int menu(void);
double leerDato();


//Funcion principal
int main()
{

    double dato1 = 0, dato2 = 0, resultado = 0;
    int operacion = 0;

    while(true)
    {
        operacion = menu();
        if(operacion != 5)
        {
            //leer datos
            cout << "Ingrese dato1: "; cin >> dato1;
            cout << endl <<"Ingrese dato2: "; cin >> dato2;

            //realizar la operacion
            switch(operacion)
                case 1:
                    resultado = dato1 + dato2;
                    break;
                case 2:
                    resultado = dato1 - dato2;
                    break;
                case 3:
                    resultado = dato1 * dato2;
                    break;
                case 4:
                    if(dato2 == 0)
                        {
                            cout << "El divisor no puede ser 0" << endl;
                        }
                        else
                        {
                            resultado = dato1 / dato2;
                            break;
                        }
        }
    }


}

int menu()
{
    int op;

    cout << "Sumar - |" << endl;
    cout << "Restar - 2" << endl;
    cout << "Multiplicar - 3" << endl;
    cout << "Dividir - 4" << endl;
    cout << "Salir - 5" << endl;

    cout << "Seleccione la operacion deseada: ";
    op = static_cast<int>(leerDato());

    while(op < 1 || op > 5)
    {
        return op;
    }
}

double leerdato()
{

    double dato = 0.0;
    cin >> dato;

    while(cin.fail()) // si el dato es incorrecto limpiar el buffer y volverlo a leer
    {
        cout << '/a';
        cin.clear();
        cin.ignore(numeric_limits<int>::max(), '/n');
        return dato;
    }

}

mistaiker

Ya lo solucione, me avia comido con corchete. Pero ahora me dice undefine reference to 'leerDato()'

Queta

Faltan las llaves al switch (http://www.cplusplus.com/doc/tutorial/control/). Por cierto, todas las funciones que tienes declaradas deben devolver un valor; la función menu tiene que devolver un número entero al igual que la función leerDato y por supuesto main.

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

mistaiker


Queta

También. A propósito, fíjate aquí:

Código (cpp) [Seleccionar]
cout << '/a';
cin.clear();
cin.ignore(numeric_limits<int>::max(), '/n');


Supongo que /a y /n los utilizas como secuencias de escape. En este caso estaría mal, dado que la barra vertical es al revés (\a y \n).
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.