#include<iostream>
#include<cstdlib>
#include<conio.h>
#include <windows.h>
#define TECLA_ARRIBA 72
#define TECLA_ABAJO 80
#define ENTER 13
using namespace std;
void gotoxy(int x,int y){
HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
SetConsoleCursorPosition(hcon,dwPos);
}
void menu_principal();
void menu_suma();
void menu_resta();
void menu_multiplicacion();
void menu_division();
int menu(const char*titulo,const char*opciones[],int n);
int main(){
menu_principal();
return 0;
}
void menu_principal(){
bool repite=true;
int opcion;
//titulo y opciones del menu
const char*titulo="MENU PRINCIPAL";
const char *opciones[]={"Sumar","Restar","Multiplicar","Dividir","Salir"};
int n=5; //numero de opciones
do{
opcion=menu(titulo,opciones,n);
//alternativas
switch(opcion){
case 1:
menu_suma();
break;
case 2:
menu_resta();
break;
case 3:
menu_multiplicacion();
break;
case 4:
menu_division();
break;
case 5:
repite=false;
break;
}
}while(repite);
}
void menu_suma(){
bool repite=true;
int opcion;
int a,b;
float c,d;
const char*titulo="MENU SUMA";
const char*opciones[]={"Sumar enteros","Sumar flotantes","Regresar"};
int n=3;
do{
opcion=menu(titulo,opciones,n);
//alternativas
system("CLS");
switch(opcion){
case 1:
cout<<"ingrese num 1:";
cin>>a;
cout<<"ingrese num 2:";
cin>>b;
cout<<"\n"<< a << "+"<< b <<"="<<a+b<<endl;
system("pause>null");
break;
case 2:
cout<<"ingrese num 1:";
cin>>c;
cout<<"ingrese num 2:";
cin>>d;
cout<<"\n"<< c<< "+"<< d <<"="<<c+d<<endl;
system("pause>null");
break;
case 3:
repite=false;
break;
}
}while(repite);
}
void menu_resta(){
bool repite=true;
int opcion;
int a,b;
float c,d;
const char*titulo="MENU RESTA";
const char*opciones[]={"Restar enteros","Restar flotantes","Regresar"};
int n=3;
do{
opcion=menu(titulo,opciones,n);
//alternativas
system("CLS");
switch(opcion){
case 1:
cout<<"ingrese num 1";
cin>>a;
cout<<"ingrese num 2";
cin>>b;
cout<<"\n"<< a << "-"<< b <<"="<<a-b<<endl;
system("pause>null");
break;
case 2:
cout<<"ingrese num 1:";
cin>>c;
cout<<"ingrese num 2:";
cin>>d;
cout<<"\n"<< c<< "-"<< d <<"="<<c-d<<endl;
system("pause>null");
break;
case 3:
repite=false;
break;
}
}while(repite);
}
void menu_multiplicacion(){
bool repite=true;
int opcion;
int a,b;
float c,d;
const char*titulo="MENU MULTIPLICACION";
const char*opciones[]={"Multiplicar enteros","Multiplicar flotantes","Regresar"};
int n=3;
do{
opcion=menu(titulo,opciones,n);
//alternativas
system("CLS");
switch(opcion){
case 1:
cout<<"ingrese num 1:";
cin>>a;
cout<<"ingrese num 2:";
cin>>b;
cout<<"\n"<< a << "x"<< b <<"="<<a*b<<endl;
system("pause>null");
break;
case 2:
cout<<"ingrese num 1";
cin>>c;
cout<<"ingrese num 2";
cin>>d;
cout<<"\n"<< c<< "x"<< d <<"="<<c*d<<endl;
system("pause>null");
break;
case 3:
repite=false;
break;
}
}while(repite);
}
void menu_division(){
bool repite=true;
int opcion;
int a,b;
float c,d;
const char*titulo="MENU DIVISION";
const char*opciones[]={"Dividir enteros","Dividir flotantes","Regresar"};
int n=3;
do{
opcion=menu(titulo,opciones,n);
//alternativas
system("CLS");
switch(opcion){
case 1:
cout<<"ingrese num 1:";
cin>>a;
cout<<"ingrese num 2:";
cin>>b;
if(b==0){
cout<<"no se puede dividir por cero"<<endl;
}else{
cout<<"\n"<< a << "/"<< b <<"="<<a/b<<endl;
}
system("pause>null");
break;
case 2:
cout<<"ingrese num 1";
cin>>c;
cout<<"ingrese num 2";
cin>>d;
if(d==0){
cout<<"no se puede dividir por cero"<<endl;
}else{
cout<<"\n"<< c << "/"<< d <<"="<<c/d<<endl;
}
system("pause>null");
break;
case 3:
repite=false;
break;
}
}while(repite);
}
int menu(const char*titulo,const char*opciones[],int n){
int opcionSeleccionada=1;
int tecla;
bool repite=true;
do{
system("CLS");
gotoxy(5,3+opcionSeleccionada);cout<<"==>";
//imprimir titulo
gotoxy(15,2);cout<<titulo;
//inprimir opciones
for(int i=0;i<n;i++){
gotoxy(10,4+i);cout<<i+1<<")"<<opciones[i];
}
do{
tecla=getch();
}while(tecla!=TECLA_ARRIBA && tecla!= TECLA_ABAJO&&tecla!=ENTER);
switch(tecla){
case TECLA_ARRIBA:
opcionSeleccionada--;
if(opcionSeleccionada<1){
opcionSeleccionada=n;
}
break;
case TECLA_ABAJO:
opcionSeleccionada++;
if(opcionSeleccionada>n){
opcionSeleccionada=1;
}
break;
case ENTER:
repite=false;
break;
}
}while(repite);
return opcionSeleccionada;
}
Comentarios sobre la versión: 1.0 (0)
No hay comentarios