Ayuda con ejercicio menu c++

Iniciado por worbus, 5 Marzo 2018, 02:17 AM

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

worbus

Hola gente, llevo desarrollado un código de una tarea que me dejaron, que es la siguiente:

Realiza un programa que pregunte qué quieres convertir si unidades de peso o de longitud.

Si selecciona peso, mostrará un menú para capturar la cantidad y la unidad de medida que puede ser
-Gramos
-Libras
-Onzas
-Piedras
Después mostrará otro menú idéntico al anterior donde preguntará, a qué unidad se deberá convertir y mostrar la equivalencia

Si selecciona medidas de longitud, será el mismo procedimiento pero ahora con las siguientes opciones
-Milla
-Yarda
-Pie
-Pulgada


Y tengo esto de código:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

main() {
   int opc,opc2,opc3,opc4,opc5,opc6,opc7,opc8,opc9,opc10,opc11;
   float cant,gramos,libras,onzas,piedras,millas,yardas,pies,pulgadas;

   cout<<"Ingresa la cantidad a convertir"<<endl;
   cin>>cant;
   cout<<"Opciones" <<endl;
   cout<<"1: unidades de peso"<<endl;
   cout<<"2: longitud"<<endl;
   cin>>opc;


   if (opc==1){
   cout<<"Opciones" <<endl;
   cout<<"1: Gramos"<<endl;
   cout<<"2: Libras"<<endl;
   cout<<"3: Onzas"<<endl;
   cout<<"4: Piedras"<<endl;
   cin>>opc2;
   }
   switch (opc2){
       case 1:
           cout<<"Escogiste Gramos"<<endl;
           cout<<"Selecciona a que quieres convertir los gramos: "<<endl;
           cout<<"1: Libras"<<endl;
           cout<<"2: Onzas"<<endl;
           cout<<"3: Piedras"<<endl;
           cin>>opc3;
           break;
           }

               switch (opc3) {
                   libras = cant * .0022;
                   case 1:cout<<"libras: "<<libras<<endl;
                   break;

                   onzas = cant * .0352739;
                   case 2:cout<<"Onzas: "<<onzas<<endl;
                   break;

                   piedras = cant * 0.0001575;
                   case 3:cout<<"Piedras: "<<piedras<<endl;
                   break;

                   default:
                   cout<<"Error"<<endl;
                   }

       case 2:
           cout<<"Escogiste Libras: "<<endl;
           cout<<"Selecciona a que quieres convertir las libras: "<<endl;
           cout<<"1: Gramos"<<endl;
           cout<<"2: Onzas"<<endl;
           cout<<"3: Piedras"<<endl;
           cin>>opc4;


               switch (opc4) {

                   gramos = cant * 453.59;
                   case 1:cout<<"Gramos: "<<gramos<<endl;
                   break;

                   onzas = cant * 16;
                   case 2:cout<<"Onzas: "<<onzas<<endl;
                   break;

                   piedras = cant * 0.071429;
                   case 3:cout<<"Piedras: "<<piedras<<endl;
                   break;

                   default:
                   cout<<"Error"<<endl;
                   }

       case 3:
           cout<<"Escogiste Onzas: "<<endl;
           cout<<"Selecciona a que quieres convertir las onzas: "<<endl;
           cout<<"1: Gramos"<<endl;
           cout<<"2: Libras"<<endl;
           cout<<"3: Piedras"<<endl;
           cin>>opc5;


               switch (opc5){

                   gramos = cant * 28.3495;
                   case 1:cout<<"Gramos: "<<gramos<<endl;
                   break;

                   libras = cant * 0.0625;
                   case 2:cout<<"Libras: "<<libras<<endl;
                   break;

                   piedras = cant * 0.00446429;
                   case 3:cout<<"Piedras: "<<piedras<<endl;
                   break;

                   default:
                   cout<<"Error"<<endl;
                   }

       case 4:
           cout<<"Escogiste Piedras: "<<endl;
           cout<<"Selecciona a que quieres convertir las piedras: "<<endl;
           cout<<"1: Gramos"<<endl;
           cout<<"2: Libras"<<endl;
           cout<<"3: Onzas"<<endl;
           cin>>opc6;


               switch (opc6){

                   gramos = cant * 6350.29;
                   case 1:cout<<"Gramos: "<<gramos<<endl;
                   break;

                   libras = cant * 14;
                   case 2:cout<<"Libras: "<<libras<<endl;
                   break;

                   onzas =  cant * 224;
                   case 3:cout<<"Onzas: "<<onzas<<endl;
                   break;

                   default:
                   cout<<"Error"<<endl;

   }
}

else {

   cout<<"Opciones" <<endl;
   cout<<"1: Milla"<<endl;
   cout<<"2: Yarda"<<endl;
   cout<<"3: Pie"<<endl;
   cout<<"4: Pulgada"<<endl;
   cin>>opc7;


   switch (opc7){
       case 1:
           cout<<"Escogiste Milla"<<endl;
           cout<<"Selecciona a que quieres convertir las millas: "<<endl;
           cout<<"1: Yarda"<<endl;
           cout<<"2: Pie"<<endl;
           cout<<"3: Pulgada"<<endl;
           cin>>opc8;
           break;
           }

               switch (opc8) {

                   yardas = cant * 1760;
                   case 1:cout<<"Yardas: "<<yardas<<endl;
                   break;

                   pies = cant * 5280;
                   case 2:cout<<"Pies: "<<pies<<endl;
                   break;

                   pulgadas = cant * 63360;
                   case 3:cout<<"Pulgadas: "<<pulgadas<<endl;
                   break;
                   default:
                   cout<<"Error"<<endl;
                   }

       case 2:
           cout<<"Escogiste Yardas: "<<endl;
           cout<<"Selecciona a que quieres convertir las yardas: "<<endl;
           cout<<"1: Millas"<<endl;
           cout<<"2: Pies"<<endl;
           cout<<"3: Pulgadas"<<endl;
           cin>>opc9;
           break;

               switch (opc9) {

                   millas = cant * 0.000568182;
                   case 1:cout<<"Millas: "<<millas<<endl;
                   break;

                   pies = cant * 3;
                   case 2:cout<<"Pies: "<<pies<<endl;
                   break;

                   pulgadas = cant * 36;
                   case 3:cout<<"Pulgadas: "<<pulgadas<<endl;
                   break;

                   default:
                   cout<<"Error"<<endl;
                   }

       case 3:
           cout<<"Escogiste Pies: "<<endl;
           cout<<"Selecciona a que quieres convertir los pies: "<<endl;
           cout<<"1: Millas"<<endl;
           cout<<"2: Yardas"<<endl;
           cout<<"3: Pulgadas"<<endl;
           cin>>opc10;
           break;

               switch (opc10){

                   millas = cant * 0.000189394;
                   case 1:cout<<"Millas: "<<millas<<endl;
                   break;

                   yardas = cant * 0.333333;
                   case 2:cout<<"Yardas: "<<yardas<<endl;
                   break;

                   pulgadas = cant * 12;
                   case 3:cout<<"Pulgadas: "<<pulgadas<<endl;
                   break;

                   default:
                   cout<<"Error"<<endl;
                   }

       case 4:
           cout<<"Escogiste Pulgadass: "<<endl;
           cout<<"Selecciona a que quieres convertir las pulgadas: "<<endl;
           cout<<"1: Milla"<<endl;
           cout<<"2: Yarda"<<endl;
           cout<<"3: Pie"<<endl;
           cin>>opc11;
           break;

               switch (opc11){

                   millas = cant * 1.5783;
                   case 1:cout<<"Millas: "<<millas<<endl;
                   break;

                   yardas = cant * 0.0277778;
                   case 2:cout<<"Yardas: "<<yardas<<endl;
                   break;

                   pies = cant * 0.0833333;
                   case 3:cout<<"Pies: "<<pies<<endl;
                   break;

                   default:
                   cout<<"Error"<<endl;

   }
}


Me dice que los cases no están declarados, pero la verdad es que ya no se que más hacer :( Llevo horas en el.
¿alguien que me pueda echar una mano?
OJO! Por favor no incluir cosas muy complejas (como el do-while o cosas raras, apenas llevo 2 meses en mi escuela viendo programacion y vamos un poco lento), mas que nada solo lo básico :D

SALUDOS!


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

MAFUS

No haces bien los case:
Tú escribes
switch (opc3) {
    libras = cant * .0022;
    case 1:cout<<"libras: "<<libras<<endl;
    break;
    // ...


La línea en que calculas libras está en una dimensión desconocida, no hay manera a que el programa llegue a ella y la razón es que has puesto el case después.
Los case son puntos de entrada donde empezará la ejecución, así que es lo primero que debe aparecer.
Debe quedar así:
switch (opc3) {
    case 1:
        libras = cant * .0022;
        cout<<"libras: "<<libras<<endl;
        break;
    // ...

worbus

Tienes toda la razón, ya me pudo compilar, muchas gracias!