Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/09/2010, 21:21
garitaj
 
Fecha de Ingreso: septiembre-2010
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: AYUDA: colaboracion con pequeño programa de registro

ya resolvi la situacion y el programa me quedo asi:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include "clase.hpp"
  5. using namespace std;
  6.  
  7. //programa que crea un registro de personas con
  8. //sus respectivos pasatiempos
  9.  
  10. //prototipo de funciones
  11. void func_crea_objeto(string fulano);
  12. void func_borra_objeto(string mengano);
  13. void func_lista_objetos();
  14. void func_lista_pasatiempos(string sutano);
  15. void func_lista_personas(string pasatiempo);
  16.  
  17. //declaro el vector donde guardare cada objeto de la clase
  18. vector<Persona> objetos;
  19.  
  20. //programa principal
  21. int main()
  22. {
  23.     cout<<"programa registro de pasatiempos\n"<<endl
  24.         <<"escoja una de las siguientes opciones"<<endl
  25.         <<"o teclee 0 para salir:\n"<<endl
  26.         <<"teclee 1 para agragar un nombre y sus pasatiempos"<<endl
  27.         <<"teclee 2 para borrar un nombre y sus pasatiempos"<<endl
  28.         <<"teclee 3 para listar todos los nombres"<<endl
  29.         <<"teclee 4 para listar los pasatiempos de alguien en particular"<<endl
  30.         <<"teclee 5 para listar las personas con un pasatiempo en particular\n"<<endl;
  31.  
  32.     cout<<"Ingrese su eleccion (0 para salir): ";
  33.     int x;
  34.     cin>>x;
  35.     while ((x != 0)&&((x==1)||(x==2)||(x==3)||(x==4)||(x==5)))//necesario para que el bucle no quede enciclado
  36.     {                                                         //si le introduce otro valor a x
  37.         if((x==1)||(x==2)||(x==3)||(x==4)||(x==5))
  38.         {
  39.             if(x == 1)
  40.             {
  41.                 cout<<"\nIngrese el nombre de la persona: ";
  42.                 string fulano;
  43.                 cin>>fulano;
  44.                 func_crea_objeto(fulano);//llamo a la funcion
  45.                 cout<<"\ningrese otra opcion (0 para salir): ";
  46.                 cin>>x;
  47.             }
  48.  
  49.             if(x == 2)
  50.             {
  51.                 cout<<"\nIngrese el nombre de la persona que quiere eliminar: ";
  52.                 string mengano;
  53.                 cin>>mengano;
  54.                 func_borra_objeto(mengano);//llamo a la funcion
  55.                 cout<<"\ningrese otra opcion (0 para salir): ";
  56.                 cin>>x;    
  57.             }
  58.  
  59.             if(x == 3)
  60.             {
  61.                 func_lista_objetos();//llamo a la funcion
  62.                 cout<<"\ningrese otra opcion (0 para salir): ";
  63.                 cin>>x;    
  64.             }
  65.  
  66.             if(x == 4)
  67.             {
  68.                 cout<<"\nTeclee el nombre de quien desea saber los pasatiempos: ";
  69.                 string sutano;
  70.                 cin>>sutano;
  71.                 func_lista_pasatiempos(sutano);//llamo a la funcion
  72.                 cout<<"\ningrese otra opcion (0 para salir): ";
  73.                 cin>>x;    
  74.             }
  75.  
  76.             if(x == 5)
  77.             {
  78.                 cout<<"\nTeclee el pasatiempo: ";
  79.                 string pasatiempo;
  80.                 cin>>pasatiempo;
  81.                 func_lista_personas(pasatiempo);//llamo a la funcion
  82.                 cout<<"\ningrese otra opcion (0 para salir): ";
  83.                 cin>>x;
  84.             }
  85.         }
  86.         else
  87.         {
  88.             cout<<"esa opcion no es valida"<<endl
  89.                 <<"escoja una de las opciones (0 para salir): ";
  90.             cin>>x;
  91.         }
  92.     }
  93.  
  94. return 0;
  95. }
  96.  
  97. /*************************DECLARO FUNCIONES***************************/
  98.  
  99. void func_crea_objeto(string fulano)
  100. {
  101.     //creando un objeto de la clase Persona
  102.     Persona persona;
  103.    
  104.     //asignando valores a las variables miembro de la clase
  105.     persona.Setnombre(fulano);
  106.     cout<<"Introduzca los pasatiempos ('0' para salir) de " <<fulano<<":"<<endl;
  107.     cout<<"Pasatiempo #1: ";
  108.     string pas;
  109.     cin>>pas;
  110.     int a = 2;
  111.     while(pas != "0")
  112.     {
  113.         persona.Setpasatiempos(pas);
  114.         cout<<"Pasatiempo #"<<a<<": ";
  115.         cin>>pas;
  116.         a = a + 1;
  117.     }
  118.     objetos.push_back(persona);//introsuzco el objeto en un vector
  119. }
  120.  
  121. void func_borra_objeto(string mengano)
  122. {
  123.     int prueba = 0;
  124.     for(unsigned i = 0; i < objetos.size(); i++)
  125.     {
  126.         if((objetos[i].devuelve_nombre()) == mengano)
  127.         {
  128.             objetos.erase(objetos.begin() + i);//borro el objeto solicitado
  129.             cout<<"\nLos datos de "<<mengano<<" han sido eliminados"<<endl;
  130.             prueba = 1;
  131.         }
  132.     }
  133.     if(prueba == 0)
  134.         cout<<"Ese nombre no esta en el registro"<<endl;
  135. }
  136.  
  137. void func_lista_objetos()
  138. {
  139.     cout<<"\nTenemos a:"<<endl;
  140.     for(unsigned i = 0; i < objetos.size(); i++)
  141.     {
  142.         cout<<objetos[i].devuelve_nombre()<<" con "//obtengo el nombre de la persona
  143.             <<(objetos[i].devuelve_vector()).size()<<" pasatiempo(s)"<<endl;//obtengo la cantidad de pasatiempos
  144.     }
  145. }
  146.  
  147. void func_lista_pasatiempos(string sutano)
  148. {
  149.     for(unsigned i = 0; i < objetos.size(); i++)
  150.     {
  151.         if((objetos[i].devuelve_nombre()) == sutano)
  152.         {
  153.             if((objetos[i].devuelve_vector()).size() == 0)//en caso de que la persona no tenga pasatiempos
  154.                 cout<<sutano<<" no tiene pasatiempos"<<endl;
  155.            
  156.             else    
  157.             {
  158.                 for(unsigned j = 0; j < (objetos[i].devuelve_vector()).size(); j++)//recorro el vector de pasatiempos del objeto 'persona'
  159.                 {
  160.                     cout<<objetos[i].devuelve_vector()[j]<<endl;
  161.                 }
  162.             }
  163.         }
  164.     }
  165. }
  166.  
  167. void func_lista_personas(string pasatiempo)
  168. {
  169.     int prueba = 0;
  170.     for(unsigned i = 0; i < objetos.size(); i++)
  171.     {
  172.         for(unsigned j = 0; j < (objetos[i].devuelve_vector()).size(); j++)
  173.         {
  174.             if(objetos[i].devuelve_vector()[j] == pasatiempo)
  175.             {
  176.                 cout<<objetos[i].devuelve_nombre()<<endl;
  177.                 prueba = 1;
  178.             }
  179.         }
  180.     }
  181.     if(prueba == 0) cout<<"Nadie practica esa actividad"<<endl;
  182. }

Y esta es la clase que utilice:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. class Persona {
  7.     private:
  8.         string nombre;
  9.         vector<string> pasatiempos;
  10.    
  11.     public:
  12.         void Setnombre(string nombre);
  13.         string devuelve_nombre();
  14.         void Setpasatiempos(string actividad);
  15.         vector<string> devuelve_vector();
  16. };
  17.  
  18. void Persona::Setnombre(string persona)
  19. {
  20.     nombre = persona;
  21. }
  22.  
  23. string Persona::devuelve_nombre()
  24. {
  25.     return nombre;
  26. }
  27.  
  28. void Persona::Setpasatiempos(string actividad)
  29. {
  30.     pasatiempos.push_back(actividad);
  31. }
  32.  
  33. vector<string> Persona::devuelve_vector()
  34. {
  35.     return pasatiempos;
  36. }