[C con Clase] Tengo un error lógico creo...

Reinel Hernández Peraza reinel en uci.cu
Lun Dic 4 13:51:18 CET 2006


#include <stdio.h>

#include <ctype.h>

 

class DatosEstudiantes{

  private:

    char *mNombre;

    char *mGrupo;

    int mEdad;

    int mAnno;

 

  public:

//  *** CONSTRUCTORES DE MI CLASE *** //

    DatosEstudiantes()

    {

      mNombre = '\000';

      mGrupo = '\000';

      mEdad = 1;

      mAnno = 1990;

     }

    DatosEstudiantes(char *pNombre, char *pGrupo, int pEdad, int pAnno);

 

//  *** METODOS SET DE MI CLASE *** //

    void Set_Nombre(char *pNombre){ mNombre = pNombre;}

    void Set_Grupo(char *pGrupo){ mGrupo = pGrupo;}

    void Set_Edad(int pEdad){ mEdad = pEdad;}

    void  Set_Anno(int pAnno){  mAnno = pAnno;}

 

//  *** METODOS GET DE MI CLASE *** //

    char *Get_Nombre();

    char *Get_Grupo();

    int Get_Edad();

    int Get_Anno();

 

};

 

//  *** DEFINICIÓN DE LOS MÉTODOS GET, FUERA DE LA CLASE  *** //

  char *DatosEstudiantes::Get_Nombre()

  {

    return mNombre;

  }

  char *DatosEstudiantes::Get_Grupo()

  {

    return mGrupo;

  }

  int DatosEstudiantes::Get_Edad()

  {

    return mEdad;

  }

  int DatosEstudiantes::Get_Anno()

  {

    return mAnno;

  }

 

int main(int argc, char *argv[])

 

{

/*  CREACIÓN DE UN ARREGLO DE OBJETOS, SE HARÁ DE FORMA DINÁMICA

    EL USUARIO PODRÁ DECIR EL TAMAÑO. SE USA EL CONSTRUCTOR SIN

    ARGUMENTOS EN ESTE CASO. */

 

  int Cant;

  char Mostrar;

  char aNombre[100];

  char aGrupo[25];

  int aEdad;

  int aAnno;

 

  printf("** Cu\240ntos alumnos va a procesar: ");

  scanf("%d", &Cant);

  fflush(stdin);

  DatosEstudiantes *GrupoX;

  GrupoX = new DatosEstudiantes[Cant];

  printf("\250 Desea ver la lista de los objetos creados[n = No] \77: ");

  scanf("%c", &Mostrar);

  fflush(stdin);

  if (tolower(Mostrar) != 'n')

    for (int i = 0; i < Cant; i++)

    {

      printf("Nombre alumno [%2d]: %s\n", i + 1, GrupoX[i].Get_Nombre());

      printf(" Grupo alumno [%2d]: %s\n", i + 1, GrupoX[i].Get_Grupo());

      printf("  Edad alumno [%2d]: %d\n", i + 1, GrupoX[i].Get_Edad());

      printf("   A\244o alumno [%2d]: %d\n", i + 1, GrupoX[i].Get_Anno());

      printf("-------------------------------------------------------\n");

    }

  printf("\n **** ENTRADA DE DATOS: *** \n");

  for (int i = 0; i < Cant; i++)

  {

    printf("Nombre alumno[%2d]: ", i + 1);

    gets(aNombre);

    printf(" Grupo alumno[%2d]: ", i + 1);

    gets(aGrupo);

    printf("  Edad alumno[%2d]: ", i + 1);

    scanf("%d", &aEdad);

    fflush(stdin);

    printf("   A\244o alumno[%2d]: ", i + 1);

    scanf("%d", &aAnno);

    fflush(stdin);

    GrupoX[i].Set_Nombre(aNombre);

    GrupoX[i].Set_Grupo(aGrupo);

    GrupoX[i].Set_Edad(aEdad);

    GrupoX[i].Set_Anno(aAnno);

  }

 

    printf("\250 Desea ver la lista de los objetos creados[n = No] \77: ");

  scanf("%c", &Mostrar);

  fflush(stdin);

  if (tolower(Mostrar) != 'n')

    for (int i = 0; i < Cant; i++)

    {

      printf("Nombre alumno [%2d]: %s\n", i + 1, GrupoX[i].Get_Nombre());

      printf(" Grupo alumno [%2d]: %s\n", i + 1, GrupoX[i].Get_Grupo());

      printf("  Edad alumno [%2d]: %d\n", i + 1, GrupoX[i].Get_Edad());

      printf("   A\244o alumno [%2d]: %d\n", i + 1, GrupoX[i].Get_Anno());

      printf("-------------------------------------------------------\n");

    }

 

  getchar();

  return 0;

}

 

Este programa se ejecuta, pero en la salida, los métodos que devuelven el nombre entrado siempre me devuelven el mismo nombre. Supongo que sea algo del puntero devuelto por este método, ¿Me pueden ayudar?

 

Reinel Hernández Peraza

Técnico Hardware Docente 3

Universidad Ciencias Informáticas.

"Vivimos para hacer historias, o para ser historia"

 

 

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20061204/42454763/attachment.html>


Más información sobre la lista de distribución Cconclase