• Martes 14 de Mayo de 2024, 17:10

Autor Tema:  problema con clases  (Leído 1213 veces)

camaradakoba

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
problema con clases
« en: Jueves 5 de Marzo de 2009, 23:29 »
0
tengo que hacer un programita que de una lista de empleados me muestre los empleados que tengan mas de 5000 de sueldo y los anteriores al 01/01/2005, con lo primero no hubo mayor problema pero con lo segundo no me sale nada
    # include <iostream.h>
    # include <string.h>
    # include <conio.h>
    int i, j, k;
    class fecha
    {
       public:
          fecha (int mes, int dia, int anio);
          void  mostrar_fecha(void);
          void clasificar_sueldo(void);
          void clasificar_permanencia(void);

          int mes;
          int dia;
          int anio;
       };
    class empleado
    {
       public:
          empleado (char *nombre, int edad, int mes, int dia, int anio, float sueldo);
          ~empleado(void);
          void  mostrar_empleado(void);
          empleado (void);

          char nombre[64];
          int edad;
          float sueldo;
          fecha *fecha_contrato;
       };
    fecha::fecha (int mes, int dia, int anio)
    {
       fecha::mes=mes;
       fecha::dia=dia;
       fecha::anio=anio;
       }
    void fecha::mostrar_fecha(void)
    {
       cout<<mes<<"/"<<dia<<"/"<<anio<<"n";
       }
    empleado::empleado (char *nombre, int edad, int mes, int dia, int anio, float sueldo)
    {
       strcpy(empleado::nombre,nombre);
       empleado::edad=edad;
       empleado::sueldo=sueldo;
       fecha_contrato=new fecha(mes, dia, anio);
       }
    empleado::empleado (void)
    {
       }
    empleado::~empleado(void)
    {
       delete fecha_contrato;
       }
    void empleado::mostrar_empleado(void)
    {
       cout<< "Nombre: "<<nombre<<"n";
       cout<< "Edad: "<<edad<<"n";
       cout<< "Sueldo: "<<sueldo<<"n";
       cout<< "Fecha de contrato: ";
       fecha_contrato->mostrar_fecha();
       }

    void main()
    {

       empleado operarios[6];
       empleado operario1 ("Paty Vera", 22, 2008, 12, 25, 2000);
       empleado operario2 ("Martin Cuentas", 22, 2005, 10, 20, 6000);
       empleado operario3 ("Carlos Ticona", 23, 2003, 11, 25, 5500);
       empleado operario4 ("Marcelo Valencia", 25, 2007, 10, 12, 4500);
       empleado operario5 ("Armando Ccoa", 20, 2005, 10, 20, 4000);
       empleado operario6 ("Brant Mantilla", 22, 2004, 12, 20, 5000);
       operarios[0]= operario1;
       operarios[1]= operario2;
       operarios[2]= operario3;
       operarios[3]= operario4;
       operarios[4]= operario5;
       operarios[5]= operario6;
       for (i=0; i<5; i++)
       {
          operarios
.mostrar_empleado();
      }
   cout<<"Los empleados que ganan mas de 5000 son: n";
   for (j=0; j<5; j++)
   {

      if (operarios[j].sueldo>5000)
         {operarios[j].mostrar_empleado();}
      }
   cout<<"Los empleados anteriores a 01/01/2005 : n";
   for (k=0; k<5; j++)
   {

      if (operarios[k].fecha_contrato->anio<=2005)
         {operarios[j].mostrar_empleado();}
      else
         {}
      }



   getch();
   }[/list]
agradeceria cualquier ayuda
« última modificación: Viernes 6 de Marzo de 2009, 04:26 por camaradakoba »

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: problema con clases
« Respuesta #1 en: Viernes 6 de Marzo de 2009, 01:26 »
0
Hola camarada  ^_^

Para poner cachos de código, por favor, utiliza las etiquetas de código.

Cita de: "camaradakoba"
los anteriores al 01/01/2005
Cita de: "camaradakoba"
if (operarios[k].fecha_contrato->anio>=2005)
Si quieres los anteriores a 2005 deberías poner, evidentemente:

Código: C
  1. if (operarios[k].fecha_contrato->anio<=2005)
  2.  

Salud

camaradakoba

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: problema con clases
« Respuesta #2 en: Viernes 6 de Marzo de 2009, 04:27 »
0
perdon, error en el copiado, el problema es que compila pero no sale

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: problema con clases
« Respuesta #3 en: Viernes 6 de Marzo de 2009, 14:17 »
0
Más cosas

Cita de: "camaradakoba"
for (k=0; k<5; j++)
Debe ser

Código: C
  1. for (k=0; k<5; k++)
  2.  
y un poco más abajo también el mismo error:

Cita de: "camaradakoba"
{operarios[j].mostrar_empleado();}
Debría ser:

Código: C
  1. {operarios[k].mostrar_empleado();}
  2.  
Además, no hace falta poner un else si va a estar vacío  :P Tampoco necesitas la variable k para el segundo bucle, puedes usar j ya que está libre. Se usan varias variables para los bucles cuando están anidados.

Salud

camaradakoba

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: problema con clases
« Respuesta #4 en: Viernes 6 de Marzo de 2009, 15:36 »
0
camarada, gracias en verdad me salvaste la vida