Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Menu c++

Estas en el tema de Menu c++ en el foro de C/C++ en Foros del Web. Hola hola!!! Bueno primero que todo gracias por siempre responder a mis preguntas, lo segundo es que es mi primera vez programando en C++, tengo ...
  #1 (permalink)  
Antiguo 21/05/2009, 18:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 54
Antigüedad: 15 años, 8 meses
Puntos: 0
Menu c++

Hola hola!!!
Bueno primero que todo gracias por siempre responder a mis preguntas, lo segundo es que es mi primera vez programando en C++, tengo una duda, soy medio autodidacta y pues me tope con un problema tengo este codigo:
El problema? no se sale del menu tras haberle dado la opcion 3... TT_TT

Código:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>

char convoc();
int nac();
int menu();

char *e;
int b,c,ac=2009, ma=5, da=21, an, mn, dn, edad;

char convoc()
{
   clrscr();
   cout<<"Escriba palabra: ";
   cin>>e;
   b = strlen(e);
   for (int i = 0; i < b; i++)
   {
    if ((e[i]=='a')||(e[i]=='e')||(e[i]=='i')||(e[i]=='o')||(e[i]=='u'))
      {
	c = c+1;
      }
   }
  cout<< "Se encontraron "<<c<<" vocales";
  getch();
  void main();
  return 0;
}

int nac()
{
 clrscr();
 cout<< "Digite el dia de su nacimiento: ";
 cin>>dn ;
 cout<< "\nDigite el mes de nacimineto: ";
 cin>>mn;
 cout<< "\nDigite el a¤o de nacimineto: ";
 cin>>an;
 if (mn<=ma)

   {
     if (dn>=da)
     {
       edad = ac-an;
       cout<< "Tiene "<<edad <<" a¤os ";
     }
     else
     {
      edad= ac-1-an;
      cout<< "Tiene "<<edad <<" a¤os ";
     }
   }
   else
   {
    edad = ac-1-an;
    cout<< "Tiene "<<edad <<" a¤os ";
   }
 cout<<"\n";
 getch();
 void main();
 return 0;
}

int menu()
{
 clrscr();
 int opc=0, temp=0;
 cout<< "1.Conteo de Vocal\n";
 cout<< "2.Calculo de edad\n";
 cout<< "3.Salir\n ";
 cout<< "Digite opcion ";
 cin>>opc;

 while ((opc != 3)&&(temp != 3))
 {
  switch (opc)
   {
    case 1: convoc(); menu(); break;
    case 2: nac(); menu(); break;
    case 3: opc = 3; temp = 3; break;
   }
  }
 return 0;
}

void main()
{
 clrscr();
 menu();
}
  #2 (permalink)  
Antiguo 23/05/2009, 00:10
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
Respuesta: Menu c++

Hola,

En tu codigo veo que la función menú hace uso de recursividad (se llama a si misma), lo cual veo inncesario. Porque no haces el proceso del bucle en el main o hazlo todo dentro de la función pero que devuelva void, no es necesaria la asignación del tecer case, porque dicho valor ya lo ingresaste por teclado.

Tu función está así:

Código c++:
Ver original
  1. int menu()
  2. {
  3.  clrscr();
  4.  int opc=0, temp=0;
  5.  cout<< "1.Conteo de Vocal\n";
  6.  cout<< "2.Calculo de edad\n";
  7.  cout<< "3.Salir\n ";
  8.  cout<< "Digite opcion ";
  9.  cin>>opc;
  10.  
  11.  while ((opc != 3)&&(temp != 3))
  12.  {
  13.   switch (opc)
  14.    {
  15.     case 1: convoc(); menu(); break;
  16.     case 2: nac(); menu(); break;
  17.     case 3: opc = 3; temp = 3; break;
  18.    }
  19.   }
  20.  return 0;
  21. }

con el primer cambio que te comente sería:

Código c++:
Ver original
  1. int menu()
  2. {
  3.  clrscr();
  4.  int opc=0;
  5.  cout<< "1.Conteo de Vocal\n";
  6.  cout<< "2.Calculo de edad\n";
  7.  cout<< "3.Salir\n ";
  8.  cout<< "Digite opcion ";
  9.  cin>>opc;
  10.  return opc;
  11. }
  12.  
  13. void main()
  14. {
  15.   int op=0;
  16.  while (op != 3)
  17.  {
  18.   clrscr();
  19.   op=menu();
  20.   switch (op)
  21.    {
  22.     case 1: convoc(); break;
  23.     case 2: nac();
  24.    }
  25.   }
  26. }

La segunda forma sería:

Código c++:
Ver original
  1. void menu()
  2. {
  3.   int opc=0;
  4.  
  5.  while (opc != 3)
  6.  {
  7.     clrscr();
  8.     cout<< "1.Conteo de Vocal\n";
  9.     cout<< "2.Calculo de edad\n";
  10.     cout<< "3.Salir\n ";
  11.     cout<< "Digite opcion ";
  12.     cin>>opc;
  13.  
  14.     switch (opc)
  15.     {
  16.      case 1: convoc(); break;
  17.      case 2: nac();
  18.     }
  19.  }
  20. }
  21.  
  22. void main()
  23. {
  24.    menu();
  25. }

Espero que te sea de mucha ayuda.

Saludos
__________________
En programación hay mil y un formas de hacer lo mismo...

Última edición por fradve; 23/05/2009 a las 00:13 Razón: palabra
  #3 (permalink)  
Antiguo 24/05/2009, 10:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 54
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Menu c++

Hola muy agradecida por tu respuesta voy a tratar de hacerlo de la primera forma por que ya habia hecho de la segunda, en realidad le agrege temp como para forzar la salida pero nada mas, gracias nuevamente, te aviso cuando haya provado, gracias de nuevo!
  #4 (permalink)  
Antiguo 27/05/2009, 17:44
 
Fecha de Ingreso: agosto-2008
Mensajes: 54
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Menu c++

No entiendo por que funciono...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:54.