Deseo que tengan un buen día, hoy estoy en busca de ayuda con un programa que estoy realizando en c++ (lo compilo con el programa Dev-C++) en fin, en visto alguno temas (la verdad pocos) sobre el bucle que se produce al ingresar un carácter en una variable, no se si me explique bien, el programa en general es una calculadora de operaciones básicas con fracciones, la condición es que en el menú del programa no acepte caracteres ni otras opciones que no aparezcan en el listado del menú. Pude ver en otro tema del foro la misma pregunta pero la verdad no entendí, espero me puedan ayudar, aquí dejo el código.
Código
#include<iostream> #include<math.h> #include<conio.h> #include<locale.h> using namespace std; int main() { setlocale(LC_CTYPE, "Spanish"); int opc; float n1,d1,n2,d2,sum1,sum2,res1,res2,mul1,mul2,div1,div2,ans; do{ system("cls"); //Funcion para limpiar la pantalla// //Menú Principal// cout<<"\t\t\t\tBIENVENIDO\n"; cout<<"\n¿Qué operación desea hacer?\n"; cout<<"\n1. Suma\n"; cout<<"2. Resta\n"; cout<<"3. Multiplicación\n"; cout<<"4. División\n"; cout<<"5. Salir\n\n"; cout<<"Elija una opción: ";cin>>opc; system("cls"); switch(opc) { case 1: cout<<"\nIntroduzca el valor del numerador de la primer fracción:\n";cin>>n1; cout<<"Introduzca el valor del denominador de la primer fracción:\n";cin>>d1; cout<<"Introduzca el valor del numerador de la segunda fracción:\n";cin>>n2; cout<<"Introduzca el valor del denominador de la segunda fracción:\n";cin>>d2; system("cls"); cout<<"El resultado de "; cout<<n1; cout<<"/"; cout<<d1; cout<<" + "; cout<<n2; cout<<"/"; cout<<d2; cout<<" es:\n"; if (d1 == d2){ sum1 = (n1 + n2); cout<<"\nResultado en fracción:\n"; cout<<sum1<<"/"<<d1; ans = sum1/d1; cout<<"\n\nResultado de la división:\n"; cout<<ans; cout<<"\n"; cout<<"Presione una tecla para volver al menu principal"; getch(); } else if (d1 != d2){ sum1 = (n1*d2) + (d1*n2); sum2 = d1*d2; cout<<"\nResultado en fracción:\n"; cout<<sum1<<"/"<<sum2; ans = sum1/sum2; cout<<"\n\nResultado de la división:\n"; cout<<ans; cout<<"\n"; cout<<"Presione una tecla para volver al menu principal"; getch(); } break; case 2: cout<<"\nIntroduzca el valor del numerador de la primer fracción:\n";cin>>n1; cout<<"Introduzca el valor del denominador de la primer fracción:\n";cin>>d1; cout<<"Introduzca el valor del numerador de la segunda fracción:\n";cin>>n2; cout<<"Introduzca el valor del denominador de la segunda fracción:\n";cin>>d2; system("cls"); cout<<"El resultado de "; cout<<n1; cout<<"/"; cout<<d1; cout<<" - "; cout<<n2; cout<<"/"; cout<<d2; cout<<" es:\n"; if (d1 == d2){ res1 = (n1 - n2); cout<<"\nResultado en fracción:\n"; cout<<res1<<"/"<<d1; ans = res1/d1; cout<<"\n\nResultado de la división:\n"; cout<<ans; cout<<"\n"; cout<<"Presione una tecla para volver al menu principal"; getch(); } else if (d1 != d2){ res1 = (n1*d2) - (d1*n2); res2 = d1*d2; cout<<"\nResultado en fracción:\n"; cout<<res1<<"/"<<res2; ans = res1/res2; cout<<"\n\nResultado de la división:\n"; cout<<ans; cout<<"\n"; cout<<"Presione una tecla para volver al menu principal"; getch(); } break; case 3: cout<<"\nIntroduzca el valor del numerador de la primer fracción:\n";cin>>n1; cout<<"Introduzca el valor del denominador de la primer fracción:\n";cin>>d1; cout<<"Introduzca el valor del numerador de la segunda fracción:\n";cin>>n2; cout<<"Introduzca el valor del denominador de la segunda fracción:\n";cin>>d2; system("cls"); cout<<"El resultado de "; cout<<n1; cout<<"/"; cout<<d1; cout<<" * "; cout<<n2; cout<<"/"; cout<<d2; cout<<" es:\n"; mul1 = n1*n2; mul2 = d1*d2; cout<<"\nResultado en fracción:\n"; cout<<mul1<<"/"<<mul2; ans = mul1/mul2; cout<<"\n\nResultado de la división:\n"; cout<<ans; cout<<"\n"; cout<<"Presione una tecla para volver al menu principal"; getch(); break; case 4: cout<<"\nIntroduzca el valor del numerador de la primer fracción:\n";cin>>n1; cout<<"Introduzca el valor del denominador de la primer fracción:\n";cin>>d1; cout<<"Introduzca el valor del numerador de la segunda fracción:\n";cin>>n2; cout<<"Introduzca el valor del denominador de la segunda fracción:\n";cin>>d2; system("cls"); cout<<"El resultado de "; cout<<n1; cout<<"/"; cout<<d1; cout<<" / "; cout<<n2; cout<<"/"; cout<<d2; cout<<" es:\n"; div1 = n1*d2; div2 = d1*n2; cout<<"\nResultado en fracción:\n"; cout<<div1<<"/"<<div2; ans = div1/div2; cout<<"\n\nResultado de la división:\n"; cout<<ans; cout<<"\n"; cout<<"Presione una tecla para volver al menu principal"; getch(); break; case 5: return 0; break; default: cout<<"Opción Invalida\n"; system("pause"); } }while (opc != 5); }
· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
· Los titulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex