Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ale1011 en 4 Junio 2017, 21:26 pm



Título: Regresar al menu principal
Publicado por: Ale1011 en 4 Junio 2017, 21:26 pm
Necesito ayuda tengo que regresar al menu principal desde las tres opciones de mi menu
tengo en la primera opcion tengo que preguntar si desea hacer otro calculo s/n si pone n debe regresar al menu principal, y en las otras dos opciones tengo un submenu y tengo que regresar al menu principal

aqui esta mi codigo

#include <iostream>
#include <windows.h>
#include <stdlib.h>
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void gotoxy(int x, int y){
   HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
   COORD dwPos;
   dwPos.X = x;
   dwPos.Y = y;
   SetConsoleCursorPosition(hcon, dwPos);
}

int main(int argc, char** argv)
 {
    int opcion, base , lado , altura, radio, area, perim , numla, i=1, n, acum, pre, cost, cost1, iva, mult, y=1;
    const double pi=3.1416;
    char S, N;
   
 

       gotoxy(35,1);cout<<"MENU"<<endl;
       gotoxy(35,2);cout<<"1) Calcular costo total de 4 productos"<<endl;
         gotoxy(35,3);cout<<"2) Calcular el area de figuras geometricas"<<endl;
        gotoxy(35,4);cout<<"3) Tabla de multiplicar"<<endl;
       gotoxy(35,5);cout<<"4) Salir"<<endl;
        gotoxy(35,6);cout<<"Ingrese una opcion: ";
       cin>>opcion;
       system("cls");
   
       switch(opcion)
       {
           case 1:
                do{          
                      cout<<"Calcular costo total de N productos"<<endl;
              
                       cout<<"Introduzca la cantidad de productos: ";
                       cin>>n;
                       acum=0;
                      
                       for(i=1;i<=n;i++)
                       {
                          cout<<"Introduzca el precio del producto: ";
                          cin>>pre;
                        acum=acum+pre;
                  }
                    cost=acum;
                    iva=cost*0.15;
                    cost1=cost+iva;
                    cout<<"El precio es: "<<cost<<endl;
                    cout<<"El iva es de: "<<iva<<endl;
                    cout<<"El costo total es: "<<cost1<<endl;
                   
                      cout<<"Desea otro calculo ? s/n: ";
                      cin>>S;
                      system("cls");
                       }while(S=='s');      
                    break;
                   //aqui si pone n debe regresar al menu principal
         case 2:
         
                 do{
               
                    cout<<"Calcular area de figuras geometricas"<<endl;
                     
                    gotoxy(35,1);cout<<"1) TRIANGULO"<<endl;
                    gotoxy(35,2);cout<<"2) CUADRADO"<<endl;
                    gotoxy(35,3);cout<<"3) RECTANGULO"<<endl;
                    gotoxy(35,4);cout<<"4) CIRCULO"<<endl;
                    gotoxy(35,5);cout<<"5) POLIGONO"<<endl;
                    gotoxy(35,6);cout<<"6) REGRESAR AL MENU PRINCIPAL"<<endl;
                        gotoxy(35,7);cout<<"Ingrese una opcion: ";             
                    cin>>opcion;
                    system("cls");
                  
                    switch(opcion)
                    {
                     case 1:
                            cout<<"SELECCIONASTE CALCULAR EL AREA DEL TRIANGULO"<<endl;
                    
                             cout<<"introduzca la longitud de la base: ";
                                  cin>>base;
                                  cout<<"introduzca la altura: ";
                                  cin>>altura;
                           
                              area=(base*altura)/2;
                           
                           cout<<"El area es: "<<area<<endl;
                              break;
      
                        case 2:   
                           cout<<"SELECCIONASTE CALCULAR EL AREA DEL CUADRADO"<<endl;
                             
                               cout<<"introduzca la longitud de lado: ";
                               cin>>lado;
                               
                          area=lado*lado;
                             
                           cout<<"El area es: "<<area<<endl;                                     
                           break;
      
                        case 3:
                                cout<<"SELECCIONASTE CALCULAR EL AREA DEL RECTANGULO"<<endl;
                              
                                cout<<"introduzca la longitud de la base: ";
                                  cin>>base;
                                  cout<<"introduzca la altura: ";
                                  cin>>altura;
                                 
                          area=base*altura;
                                 
                          cout<<"El area es: "<<area<<endl;                                                         
                            break;
      
                        case 4:                               
                                cout<<"SELECCIONASTE CALCULAR EL AREA DEL CIRCULO"<<endl;
                                 
                                 cout<<"introduzca el radio del circulo: ";
                              cin>>radio;
                                 
                          area=(radio*radio)*pi;
                                  
                          cout<<"El area es: "<<area<<endl;                                                                           
                         
                    case 5:
                          cout<<"SELECCIONASTE CALCULAR EL PERIMETRO DEL POLIGONO"<<endl;
                                
                          cout<<"Introduzca el numero de lados del poligono: ";
                          cin>>numla;
                          cout<<"Introduzca la medida de los lados: ";
                          cin>>lado;
                                
                          perim= numla*lado;
                                
                          cout<<"El perimetro es: "<<perim<<endl;
                             
                          case 6:
                            cout<<endl;    
                          break;         
                                    
                      gotoxy(40,6);cout<<"Desea regresar al menu geometrico? s/n: ";
                       cin>>S;
                       system("cls");
                       }while(S=='s');
            //aqui si pone n debe regresar al submenu y del submenu debe regresar al menu principal
          
         case 3:                  
                  do{
                                            
                       gotoxy(35,1);cout<<"1) Tabla del 1"<<endl;
                       gotoxy(35,2);cout<<" "<<endl;
                       gotoxy(35,3);cout<<"2) Tabla del 2"<<endl;
                       gotoxy(35,4);cout<<" "<<endl;
                       gotoxy(35,5);cout<<"3) Tabla del 3"<<endl;
                       gotoxy(35,6);cout<<" "<<endl;
                       gotoxy(35,7);cout<<"4) Tabla del 4"<<endl;
                       gotoxy(35,8);cout<<" "<<endl;
                       gotoxy(35,9);cout<<"5) Tabla del 5"<<endl;
                       gotoxy(35,10);cout<<" "<<endl;
                          gotoxy(35,11);cout<<"6) Tabla del 6"<<endl;
                    gotoxy(35,12);cout<<" "<<endl;                     
                          gotoxy(35,13);cout<<"7) Tabla del 7"<<endl;
                    gotoxy(35,14);cout<<" "<<endl;                     
                       gotoxy(35,15);cout<<"8) Tabla del 8"<<endl;
                       gotoxy(35,16);cout<<" "<<endl;
                       gotoxy(35,17);cout<<"9) Tabla del 9"<<endl;
                       gotoxy(35,18);cout<<" "<<endl;
                     gotoxy(35,19);cout<<"10) Tabla del 10"<<endl;                  
                    cout<<"Ingrese una opcion: ";
                    cin>>opcion;
                    system("cls");
                   
                    switch(opcion)
                    {
                       
                                             
                           case 1:
                                   for(i=1;i<=10;i++)
                                  {
                                      mult=opcion*i;
                                  
                                      cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                   }break;
                       
                            case 2:
                                     for(i=1;i<=10;i++)
                                   {
                                      mult=opcion*i;
                                   
                                      gotoxy(20,y);cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                      y++;
                                   }break;
                              
                            case 3:
                                 for(i=1;i<=10;i++)
                                   {
                                      mult=opcion*i;
                                  
                                      gotoxy(40,y);cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                      y++;
                                   }break;
                             
                          case 4:
                                  for(i=1;i<=10;i++)
                                   {
                                      mult=opcion*i;
                                  
                                      gotoxy(60,y);cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                      y++;
                                   }break;        
                              
                             case 5:
                                 for(i=1;i<=10;i++)
                                   {
                                      mult=opcion*i;
                                  
                                      gotoxy(80,y);cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                      y++;
                                   }break;   
                          
                            case 6: 
                                    y=14;
                                    for(i=1;i<=10;i++)
                                   {
                                      mult=opcion*i;
                                  
                                       gotoxy(1,y);cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                      y++;
                                   }break;
                       
                            case 7:
                                    y=14;
                                    for(i=1;i<=10;i++)
                                   {
                                      mult=opcion*i;
                                  
                                      gotoxy(20,y);cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                      y++;
                                   }break;
                       
                            case 8:
                                    y=14;
                                    for(i=1;i<=10;i++)
                                   {
                                      mult=opcion*i;
                                  
                                      gotoxy(40,y);cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                      y++;
                                   }break;
                          
                          case 9:
                                  y=14;
                                    for(i=1;i<=10;i++)
                                   {
                                      mult=opcion*i;
                                  
                                      gotoxy(60,y);cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                      y++;
                                   }break;
                        
                          case 10:
                                  y=14;
                                    for(i=1;i<=10;i++)
                                   {
                                      mult=opcion*i;
                                  
                                      gotoxy(80,y);cout<<opcion<<" x "<<i<<" = "<<mult<<endl;
                                      y++;
                                   }break;                                  
                               }
                         
                         gotoxy(45,27);cout<<"Desea otra tabla? s/n: ";
                              cin>>S;
                              system("cls");
                               }while(S=='s');
                //aqui si es n debe regresar al submenu de tablas y desde el submenu regresar al menu principal
       
            case 4:
                    system("cls");
                    cout<<"Gracias por su visita!"<<endl;
                    break;
   }
      
   
    
    
    
    
   return 0;
}


Título: Re: Regresar al menu principal
Publicado por: n-utz en 5 Junio 2017, 14:28 pm
El problema es que tenes todo en el main, solamente veo posible volver al "menu principal" con un goto, lo cual es muy inestable.

Te sugiero tener el menu principal en el main, y con cada opcion ir llamando a una funcion que realice el procedimiento pedido. A partir de ahi, regresar al menu principal seria tan simple como poner return, o volver a realizar ese procedimiento, llamando a esa funcion en la cual ya estamos.

No sé si me entendes. Pero lo màs fiable sería separar tu programa en distintos bloques/funciones.