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:
#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 (http://foro.elhacker.net/reglas.htm)
-Engel Lex
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;
// ...
Tienes toda la razón, ya me pudo compilar, muchas gracias!