#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