none
holas necesito ayuda con este pseudocodigo RRS feed

  • Pregunta

  • #include<iostream>
    #include<math.h>
    void main()
    {
        int c;
        double t,a;
        std::cout<<"introducir el importe total de la compra\n";
        std::cin>>t;
        std::cout<<"menu\n";
        std::cout<<"1 bolita roja\n";
        std::cout<<"2 bolita amarilla\n";
        std::cout<<"3 bolita blanca\n";
        std::cout<<"seleccione una opcion";
        std::cin>>c;
        switch(c);
        {
            case 1:
                a=t*0.4;
                std::cout<<"total a pagar es:"<<a<<"\n";
                break;
                case 2:
                    a=t*0.25;
                    std::cout<<"total a pagar es:"<<a<<"\n";
                    break;
                case 3:
                        std::cout<<"total a pagar es:"<<a<<"\n";
                        break;
                        std::cout<<"gracias por su compra";
        }
    }

    me da esta advertencia:
    Warning    1    warning C4060: switch statement contains no 'case' or 'default' labels
    y estos errores:
    Error    2    error C2046: illegal case
    Error    3    error C2043: illegal break
    para cada uno d los case y breake. q puede ser muxas gracias d antemano


    lunes, 2 de marzo de 2009 15:29

Respuestas

  • Vaya, se me escapó: te sobra el punto y coma detrás del switch(). El compilador entiende que switch empieza y acaba ahí mismo y luego todo lo que sigue es código ilegal. Al quitarlo desaparecen todos los errores (lo he probado).

    Te saldrá un nuevo aviso porque en el caso 3 imprimes a sin haberle asignado un valor antes.
    • Marcado como respuesta dbendek lunes, 2 de marzo de 2009 17:48
    lunes, 2 de marzo de 2009 17:45
    Moderador

Todas las respuestas

  • La advertencia viene porque te falta la sentencia "default" para que el switch controle todas las posibilidades. Si no lo necesitas no lo pongas, aunque un "default" vacío tampoco sería mala cosa.

    Los errores vienen porque pusiste una sentencia después del break en el caso 3. Lo correcto sería:

    #include<iostream>
    #include<math.h>
    void main()
    {
        int c;
        double t,a;
        std::cout<<"introducir el importe total de la compra\n";
        std::cin>>t;
        std::cout<<"menu\n";
        std::cout<<"1 bolita roja\n";
        std::cout<<"2 bolita amarilla\n";
        std::cout<<"3 bolita blanca\n";
        std::cout<<"seleccione una opcion";
        std::cin>>c;
        switch(c);
        {
            case 1:
                a=t*0.4;
                std::cout<<"total a pagar es:"<<a<<"\n";
                break;
                case 2:
                    a=t*0.25;
                    std::cout<<"total a pagar es:"<<a<<"\n";
                    break;
                case 3:
                        std::cout<<"total a pagar es:"<<a<<"\n";
                        std::cout<<"gracias por su compra";
                        break;    //Break siempre al final, nunca en medio
                default:    //Para evitar el warning.
                    break;
        }
    }
    lunes, 2 de marzo de 2009 17:28
    Moderador
  • me sigue tirando los mismos errores :S
    lunes, 2 de marzo de 2009 17:40
  • Vaya, se me escapó: te sobra el punto y coma detrás del switch(). El compilador entiende que switch empieza y acaba ahí mismo y luego todo lo que sigue es código ilegal. Al quitarlo desaparecen todos los errores (lo he probado).

    Te saldrá un nuevo aviso porque en el caso 3 imprimes a sin haberle asignado un valor antes.
    • Marcado como respuesta dbendek lunes, 2 de marzo de 2009 17:48
    lunes, 2 de marzo de 2009 17:45
    Moderador
  • gracias, tienes razon ese esos eran los problemas ^^
    lunes, 2 de marzo de 2009 17:49