elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Case label '#' not within a switch statement
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Case label '#' not within a switch statement  (Leído 12,308 veces)
mistaiker

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Case label '#' not within a switch statement
« en: 27 Agosto 2011, 15:07 pm »

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

Código:
//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;
    }

}


En línea

mistaiker

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Case label '#' not within a switch statement
« Respuesta #1 en: 27 Agosto 2011, 15:16 pm »

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


En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Case label '#' not within a switch statement
« Respuesta #2 en: 27 Agosto 2011, 15:17 pm »

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.
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
mistaiker

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Case label '#' not within a switch statement
« Respuesta #3 en: 27 Agosto 2011, 15:27 pm »

Solucionado, faltaba mayuscula.
En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Case label '#' not within a switch statement
« Respuesta #4 en: 27 Agosto 2011, 15:35 pm »

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

Código
  1. cout << '/a';
  2. cin.clear();
  3. 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).
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programando c++ con switch y case
Programación C/C++
nandeider 6 18,356 Último mensaje 25 Mayo 2011, 19:34 pm
por Norochii
alguien que explique. (sobre switch case)
Programación General
josco 2 3,549 Último mensaje 14 Octubre 2011, 04:40 am
por raul338
ERROR: Note: #1592 Statement may not be safe to log in statement format.
Bases de Datos
KISKE 8 6,432 Último mensaje 11 Marzo 2013, 19:08 pm
por KISKE
switch y case en que parte de mi codigo
Java
jelsir 1 2,855 Último mensaje 20 Septiembre 2013, 14:04 pm
por Mitsu
problema switch case
Programación C/C++
daniloops 1 2,618 Último mensaje 30 Mayo 2014, 23:10 pm
por El Benjo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines