elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  crear una lista de nombre con edad implementando en ella un menu.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: crear una lista de nombre con edad implementando en ella un menu.  (Leído 2,351 veces)
ChuzZ02

Desconectado Desconectado

Mensajes: 3


Ver Perfil
crear una lista de nombre con edad implementando en ella un menu.
« en: 3 Mayo 2017, 07:48 am »

Hola. Busco la ayuda de algun programador avanzado que me oriente en alguna solucion al siguiente codigo.
El ejercicio es simple, crear una lista de nombre con edad implementando en ella un menu.
Aun no consigo agregar el nombre y la edad al vector ni tampoco puedo hacer la opcion de eliminar.
agradezco cualquier ayuda que me puedan brindar.




Código
  1. #include<iostream>    //Incluyendo Bibliotecas
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. #include<stdio.h>
  5. #include<string.h>
  6.  
  7. using namespace std;  //Jerarquia
  8.  
  9. class Persona{ // Se declara una Clase: Persona
  10.    // Creando los campos
  11.      private: // Metodos Privados
  12.         string nombre;
  13.         int edad;
  14.      public: // Metodos Publicos
  15.         void setValores(string n,int e){
  16.             nombre=n; edad=e;
  17.             } // Modificador
  18.         string getNombre(){
  19.             return nombre;
  20.             } // Consultor
  21.         int getEdad(){
  22.             return edad;
  23.             } // Consultor
  24. };
  25.  
  26. class Lista{
  27.      private:
  28.         Persona empleado[10];
  29.         int ultimaPersona;
  30.         int numElemento;
  31.      public:
  32.         Lista(){ultimaPersona=0;}
  33.  
  34.         void agregarEmpleado(string n, int e){
  35.              empleado[ultimaPersona].setValores(n,e);
  36.              ultimaPersona++;
  37.         }
  38.          void eliminarEmpleado(int numElemento){
  39.           for(int i=numElemento; i<ultimaPersona; i++){
  40.              string nom = empleado[i+1].getNombre();
  41.              int ed = empleado[i+1].getEdad();
  42.              empleado[i].setValores(nom, ed);
  43.              }ultimaPersona--;
  44. }
  45.            void mostrarLista(){
  46.              for(int i=0; i<ultimaPersona; i++){
  47.                  cout<<"Nombre: "<<empleado[i].getNombre()<<endl;
  48.                  cout<<"Edad: "<<empleado[i].getEdad()<<endl;
  49.                  cout<<endl;
  50.              }
  51.         }
  52. };
  53. int main(){ //   Comienza Ejecucion de Programa.
  54.  
  55.        while(1){// Funcion que forma un ciclo hasta que el usuario ordene romperlo.
  56.  
  57.    Lista miLista;
  58.    string n;
  59.    int e;
  60.    int opc;
  61.  
  62.  
  63.    cout<<"\t\t\t<------MENU PRINCIPAL------>"<<endl<<endl;// Con '\t\t\t' llevo un poco al centro el mensaje, y con '\n\n' salto 2 lineas hacia abajo.
  64.    cout<<" 1)  Agregar Empleado\n"<<endl;
  65.    cout<<" 2)  Eliminar Empleado\n"<<endl;
  66.    cout<<" 3)  Mostrar la Lista de Empleados\n"<<endl;
  67.    cout<<" 4)  Salir\n"<<endl;
  68.  
  69.    cout<<"\nElija una opcion ===> ";
  70.    cin>>opc;
  71.  
  72. system("cls"); // Funcion para limpiar la pantalla.
  73.  
  74.  
  75.    switch(opc){
  76.            case 1:
  77.                cout<<"\n Ingrese el nombre del empleado: \n"<<endl;
  78.                cin>>n;
  79.                cout<<"\n Ingrese la edad: \n"<<endl;
  80.                cin>>e;
  81.                miLista.agregarEmpleado(n,e);
  82.                system("cls");
  83.                break;
  84.  
  85.            case 2:
  86.                cout<<"Digite el nombre del empleado que desea eliminar: "<<endl;
  87.                miLista.eliminarEmpleado();
  88.                system("pause");
  89.                system("cls");
  90.                break;
  91.  
  92.  
  93.            case 3:
  94.                cout<<"\n LISTA DE EMPLEADOS \n"<<endl;
  95.                miLista.mostrarLista();
  96.                system("pause");
  97.                system("cls");
  98.                break;
  99.  
  100. case 4:
  101.    cout<<"Saliendo..."<<endl;
  102.    exit(0); // Funcion que finaliza el programa.
  103.    break;
  104.  
  105. default:
  106.    cout<<"Opcion No valida "<<endl;
  107.    system("pause");
  108.        system("cls");
  109.  
  110.    getch();
  111.    return 0;
  112.    }
  113. }
  114.  
  115.  
  116. }


· tercera advertencia de todo lo dicho (que borraste al modificar el post)
>aquí las reglas del foro
-Engel Lex


« Última modificación: 3 Mayo 2017, 17:54 pm por engel lex » En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: AYUDA CODIGO FUENTE C++
« Respuesta #1 en: 3 Mayo 2017, 11:42 am »

Parece raro que lista derive de Persona.
El arreglo de personas definido en el main está demás.
Por qué no usas el tipo vector en vez de usar un arreglo?
Eso facilitará el borrado.
Qué tal si el borrado es solo lógico, osea marcas como si estuviera borrado pero los datos siguen allí, y luego cuando insertas reusas el espacio usado por los anteriormente borrados?


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
ChuzZ02

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: crear una lista de nombre con edad implementando en ella un menu.
« Respuesta #2 en: 3 Mayo 2017, 16:08 pm »

gracias men.
si es innecesaria que derive de la clase Persona. se puede hacer con un vector, pero el ejecicio es asi con el arreglo. ya lo modifique un poco, pero aun asi no puedo guardar los datos ingresados en el arreglo.


Código
  1. #include<iostream>    //Incluyendo Bibliotecas
  2. #include<conio.h>
  3. #include<stdlib.h>
  4.  
  5. using namespace std;  //Jerarquia
  6.  
  7. class Persona{ // Se declara una Clase: Persona
  8.    // Creando los campos
  9.      private: // Metodos Privados
  10.         string nombre;
  11.         int edad;
  12.      public: // Metodos Publicos
  13.         void setValores(string n,int e){
  14.             nombre=n; edad=e;
  15.             } // Modificador
  16.         string getNombre(){
  17.             return nombre;
  18.             } // Consultor
  19.         int getEdad(){
  20.             return edad;
  21.             } // Consultor
  22. };
  23.  
  24. class Lista{
  25.      private:
  26.         Persona empleado[10];
  27.         int ultimaPersona;
  28.         int numElemento;
  29.      public:
  30.         Lista(){ultimaPersona=0;}
  31.  
  32.         void agregarEmpleado(string n, int e){
  33.              empleado[ultimaPersona].setValores(n,e);
  34.              ultimaPersona++;
  35.         }
  36.          void eliminarEmpleado(int numElemento){
  37.           for(int i=numElemento; i<ultimaPersona; i++){
  38.              string nom = empleado[i+1].getNombre();
  39.              int ed = empleado[i+1].getEdad();
  40.              empleado[i].setValores(nom, ed);
  41.              }ultimaPersona--;
  42. }
  43.            void mostrarLista(){
  44.              for(int i=0; i<ultimaPersona; i++){
  45.                  cout<<"Nombre: "<<empleado[i].getNombre()<<endl;
  46.                  cout<<"Edad: "<<empleado[i].getEdad()<<endl;
  47.                  cout<<endl;
  48.              }
  49.         }
  50. };
  51. int main(){ //   Comienza Ejecucion de Programa.
  52.  
  53.        while(1){// Funcion que forma un ciclo hasta que el usuario ordene romperlo.
  54.  
  55.    Lista miLista;
  56.    string n;
  57.    int e;
  58.    int opc;
  59.  
  60.  
  61.    cout<<"\t\t\t<------MENU PRINCIPAL------>"<<endl<<endl;// Con '\t\t\t' llevo un poco al centro el mensaje, y con '\n\n' salto 2 lineas hacia abajo.
  62.    cout<<" 1)  Agregar Empleado\n"<<endl;
  63.    cout<<" 2)  Eliminar Empleado\n"<<endl;
  64.    cout<<" 3)  Mostrar la Lista de Empleados\n"<<endl;
  65.    cout<<" 4)  Salir\n"<<endl;
  66.  
  67.    cout<<"\nElija una opcion ===> ";
  68.    cin>>opc;
  69.  
  70. system("cls"); // Funcion para limpiar la pantalla.
  71.  
  72.  
  73.    switch(opc){
  74.            case 1:
  75.                cout<<"\n Ingrese el nombre del empleado: \n"<<endl;
  76.                cin>>n;
  77.                cout<<"\n Ingrese la edad: \n"<<endl;
  78.                cin>>e;
  79.                miLista.agregarEmpleado(n,e);
  80.                system("cls");
  81.                break;
  82.  
  83.            case 2:
  84.                cout<<"Digite el nombre del empleado que desea eliminar: "<<endl;
  85.                miLista.eliminarEmpleado();
  86.                system("pause");
  87.                system("cls");
  88.                break;
  89.  
  90.  
  91.            case 3:
  92.                cout<<"\n LISTA DE EMPLEADOS \n"<<endl;
  93.                miLista.mostrarLista();
  94.                system("pause");
  95.                system("cls");
  96.                break;
  97.  
  98. case 4:
  99.    cout<<"Saliendo..."<<endl;
  100.    exit(0); // Funcion que finaliza el programa.
  101.    break;
  102.  
  103. default:
  104.    cout<<"Opcion No valida "<<endl;
  105.    system("pause");
  106.        system("cls");
  107.  
  108.    getch();
  109.    return 0;
  110.    }
  111. }
  112.  
  113.  
  114. }
  115.  
  116.  


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex
« Última modificación: 3 Mayo 2017, 16:12 pm por engel lex » En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: AYUDA CODIGO FUENTE C++
« Respuesta #3 en: 3 Mayo 2017, 17:49 pm »

Seria bueno saber que es lo que el programa hace (o no hace), sino es una adivinanza.
Cuales son las entradas, y cual es el comportamiento que tienes que hace que digas que no funciona?
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
ChuzZ02

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: crear una lista de nombre con edad implementando en ella un menu.
« Respuesta #4 en: 3 Mayo 2017, 18:00 pm »

En el primer case(1), debe de ingresar los datos a la variables n,e. Para cuando se muestre el.case(3), pueda mostrar los datos. Pero no lo hace. Y la implementación del case(2) el algoritmo esta diseñado para eliminar un empleado si se conoce el número de elemento. Como para que elimine por el nombre.
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: crear una lista de nombre con edad implementando en ella un menu.
« Respuesta #5 en: 3 Mayo 2017, 19:58 pm »

que tal si eliminas el ruido de estar pidiendo los datos desde el teclado, usar un menu, etc. y directamente llamas a los metodos de la clase Lista con valores conocidos, y luego los muestras con el otro metodo?
Si funciona, tienes problemas en la lectura y paso de parametros, si no funciona, puedes continuar con esa manera de ingresar datos hasta que los datos que ingresas son los que aparecen en la lista.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: crear una lista de nombre con edad implementando en ella un menu.
« Respuesta #6 en: 3 Mayo 2017, 20:57 pm »

Tienes unos cuantos errores mínimos para pulir y tal, pero el que no te deja hacer funcionar la aplicación como debería es en main:

Código:
int main(){

        while(1){// Funcion que forma un ciclo hasta que el usuario ordene romperlo.
 
    Lista miLista;

A cada iteración del bucle la lista se genera de nuevo, por tanto siempre estará vacía. Declara primero la lista y después entra en el bucle.

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines