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


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda en C++  (Leído 1,879 veces)
Trapito

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda en C++
« en: 10 Febrero 2014, 19:35 pm »

Hola amigos tengo este codigo ya lo tengo resuelto pero me tira errores y no he podido descifrarlos, es referente a arreglos con objetos,si alguien me ayuda estare agradecido.

#include <iostream>

using namespace std;

class Alumno
{
      private:
               int id;
               float calificacion;
     
      public:
              Alumno()
              {
                     id=0;
                     calificacion=0;
              }
             
              void SetId(int idx)
              {
                     id=idx;
              }
             
              void SetCalificacion(float cal)
              {
                     calificacion=cal;
              }
             
              int GetId()
              {
                     return id;
              }
             
              float GetCalificacion()
              {
                     return calificacion;
              }
     
};


int main()
{
    int n, i;
    float aux;
    cout<<"PROMEDIO DE LOS ALUMNOS."<<endl<<endl;
    cout<<"¿Cuántos alumnos son?: ";
    cin>>n;
    cout<<"Debe ingresar cada una de las calificaciones de los alumnos, el id se asignará en el orden es que se ingresan los datos."<<endl<<endl<<endl;
   
    Alumno Alumnos[n];
   
    for (i=0; i<n; i++)
    {
        cout<<"Ingrese la calificación del estudiante identificado con el id: "<<i+1<<": ";
        cin>>aux;
        Alumnos.SetId(i+1);
        Alumnos.SetCalificacion(aux);
    }
   
   
    cout<<endl<<endl<<endl<<"Lista de alumnos con su respectivas notas: "<<endl;
    aux=0;
    for(i=0; i<n; i++)
    {
        cout<<"Id Alumno: "<<Alumnos.GetId()<<"    ->  Nota: "<<Alumnos.GetCalificacion()<<endl;
        aux+=Alumnos.GetCalificacion();
    }
   
   
    cout<<endl<<endl<<endl<<"El promedio de los alumnos es: "<<aux/n<<endl;
   
   
   
    cout<<endl<<endl<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

la compilacion me tira un error en funcion main ,expresion constante requerida, ya lo hecho como 500 veces pero no hay caso,hay algo que se me esta pasando y me ha quemado las neuronas.


En línea

Trapito

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda en C++
« Respuesta #1 en: 10 Febrero 2014, 19:54 pm »

En Dev C++ no me tira errores pero si en el Borland????


En línea

Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: Ayuda en C++
« Respuesta #2 en: 10 Febrero 2014, 21:29 pm »

Enhora buena, tengo tu error!!

Era fácil, recuerdas que Alumnos es un arreglo cuyo i-ésimo elemento es un objeto de la clase Alumno. Por tanto, por ejemplo en la instrucción:

Código
  1. Alumnos.SetId(i+1);

has de poner

Código
  1. Alumnos[i].SetId(i+1);

y así en otras similares. He arreglado todo tu código como se muestra al final, lo compilé y probé y me parece que funciona como se espera (no se, confírmame).

Otros detallitos, primero se recomienda que cuando insertes código uses el estilo C++ en el tipo de etiqueta GesHi, eso hará que tu código quede formateado al estilo C++ y sea más legible (de la misma forma que yo lo hago en este post).

Además, te faltó la cabecera, <stdlib.h> que contiene la macro EXIT_SUCCESS, que por cierto es usual poner dentro de una instrucción exit(), y no una return().
Por último, para hacer to programa independiente del sistema operativo (Windows o no Windows), cambia el system("PAUSE") por getchar(), para lo cual debes incluir la cabecera <stdio.h>

Aquí tu programa arreglado:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. class Alumno
  8. {
  9. private:
  10. int id;
  11. float calificacion;
  12.  
  13. public:
  14. Alumno()
  15. {
  16. id=0;
  17. calificacion=0;
  18. }
  19.  
  20. void SetId(int idx)
  21. {
  22. id=idx;
  23. }
  24.  
  25. void SetCalificacion(float cal)
  26. {
  27. calificacion=cal;
  28. }
  29.  
  30. int GetId()
  31. {
  32. return id;
  33. }
  34.  
  35. float GetCalificacion()
  36. {
  37. return calificacion;
  38. }
  39.  
  40. };
  41.  
  42.  
  43. int main()
  44. {
  45.    int n, i;
  46.    float aux;
  47.    char c;
  48.    cout<<"PROMEDIO DE LOS ALUMNOS."<<endl<<endl;
  49.    cout<<"¿Cuántos alumnos son?: ";
  50.    cin>>n;
  51.    cout<<"Debe ingresar cada una de las calificaciones de los alumnos, el id se asignará en el orden es que se ingresan los datos."<<endl<<endl<<endl;
  52.  
  53.    Alumno Alumnos[n];
  54.  
  55.    for (i=0; i<n; i++)
  56.    {
  57.        cout<<"Ingrese la calificación del estudiante identificado con el id: "<<i+1<<": ";
  58.        cin>>aux;
  59.        Alumnos[i].SetId(i+1);       /* aquí acomodamos */
  60.        Alumnos[i].SetCalificacion(aux);      /* aquí también */
  61.    }
  62.  
  63.  
  64.    cout<<endl<<endl<<endl<<"Lista de alumnos con su respectivas notas: "<<endl;
  65.    aux=0;
  66.    for(i=0; i<n; i++)
  67.    {
  68.        /* ... y aquí */
  69.        cout<<"Id Alumno: "<<Alumnos[i].GetId()<<"    ->  Nota: "<<Alumnos[i].GetCalificacion()<<endl;
  70.        /* ... y aquí */
  71.        aux+=Alumnos[i].GetCalificacion();
  72.    }
  73.  
  74.    cout<<endl<<endl<<endl<<"El promedio de los alumnos es: "<<aux/n<<endl;
  75.  
  76.    cout<<endl<<endl<<endl;
  77.  
  78.    getchar();
  79.    exit(EXIT_SUCCESS);
  80. }
« Última modificación: 10 Febrero 2014, 21:33 pm por yoel_alejandro » En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda en C++
« Respuesta #3 en: 11 Febrero 2014, 02:17 am »

Era fácil, recuerdas que Alumnos es un arreglo cuyo i-ésimo elemento es un objeto de la clase Alumno. Por tanto, por ejemplo en la instrucción:

Código
  1. Alumnos.SetId(i+1);

has de poner

Código
  1. Alumnos[i].SetId(i+1);

y así en otras similares. He arreglado todo tu código como se muestra al final, lo compilé y probé y me parece que funciona como se espera (no se, confírmame).

Otros detallitos, primero se recomienda que cuando insertes código uses el estilo C++ en el tipo de etiqueta GesHi
El uso de indices si ocurre en el programa. Lo que sucede es, al no utilizar las etiquetas de código, la primera ocurrencia de "[ i ]" (por supuesto sin espacios) se toma como el inicio de texto en cursiva.

El error que comenta Trapito se debe a la declaración:
Código
  1. int n, i;
  2.  
  3. // ...
  4.  
  5. Alumno Alumnos[n];
Ya que el numero de elementos "n" del array sera un valor calculado en tiempo de ejecución cuando se espera una constante.

Aquí lo mejor es, en lugar del array, utilizar la clase vector incluyendo el encabezado del mismo nombre, para ejemplos sobre su uso lo mejor es utilizar el motor de búsqueda de los foros.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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