Acceder a miembros de objetos

Iniciado por acega, 9 Octubre 2013, 17:44 PM

0 Miembros y 1 Visitante están viendo este tema.

acega

Hola pues resulta que estoy varado con este programa, el cual al ingresarle calificaciones de 2 materias para n alumnos debe arrojar el promedio grupal mi pregunta es como puedo acceder al promedio parcial que esta encapsulado en el objeto?? o hay otra forma de poder sacar el promedio general para los n alumnos??
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>



class Calificaciones
{

public:

  Calificaciones();

  void acceder();
  void ingresar();
  void ingresar2();
  void calcular();
  void calcular2();
  void mostrar();
  //void mostrarDatos();
  void validar();

private:

  float c1;
  float c2;
  float c3;
  float c4;
  float c5;
  float c6;
  int nc;
  float prom;
  float prom2;
  float promParcial;

};

Calificaciones::Calificaciones()
{

c1=c2=c3=c4=c5=c6=prom=prom2=promParcial=0.0;
nc=0;

}

void Calificaciones::acceder()
{
cout<<"\n\n\tIngrese numero de cuenta: ";
cin>>nc;

while( nc>999999 || nc<99999 )
  {
   cout<<"\n\t\aNumero de cuenta incorrecto, verifiquelo e ingrese de nuevo: ";
   cin>>nc;
  }

}
void Calificaciones::ingresar()
{
cout<<"\nMATERIA 1:"<<endl;
cout<<"\n\tIngrese calificacion de primer parcial: ";
cin>>c1;
cout<<"\n\tIngrese calificacion de segundo parcial: ";
cin>>c2;
cout<<"\n\tIngrese calificacion de tercer parcial: ";
cin>>c3;


}
void Calificaciones::ingresar2()
{
cout<<"\nMATERIA 2:"<<endl;
cout<<"\n\tIngrese calificacion de primer parcial: ";
cin>>c4;
cout<<"\n\tIngrese calificacion de segundo parcial: ";
cin>>c5;
cout<<"\n\tIngrese calificacion de tercer parcial: ";
cin>>c6;
clrscr();

}

void Calificaciones::validar()
{
c1 = (c1>=0&&c1<=10) ? c1 : 0;
c2 = (c2>=0&&c2<=10) ? c2 : 0;
c3 = (c3>=0&&c3<=10) ? c3 : 0;
c4 = (c4>=0&&c4<=10) ? c4 : 0;
c5 = (c5>=0&&c5<=10) ? c5 : 0;
c6 = (c6>=0&&c6<=10) ? c6 : 0;
}

void Calificaciones::calcular()
{

  cout<<"\n\n\n\n\n\n\n\n\n\n\tEl promedio del alumno: "<<nc<<"  se esta calculando...";
  validar();
  prom=(c1+c2+c3)/3;


}
void Calificaciones::calcular2()
{

  //cout<<"\n\n\n\n\n\n\n\n\n\n\tEl promedio del alumno: "<<nc<<"  se esta calculando...";
  //validar();
  prom2=(c4+c5+c6)/3;
  promParcial=(prom+prom2)/2;
  //return promParcial;


}


void Calificaciones::mostrar()
{
  //cout<<nc//cuenta que no se repita??
  cout<<endl<<" "<<nc<<"   ";
  cout<<setprecision(2)
      <<setiosflags( ios::fixed || ios::showpoint )
      <<" "<<c1
      <<"     "<<c2
<<"     "<<c3

<<"    "<<prom
      <<( prom < 7 ? " NA" : "  A")
      <<"        "<<c4
      <<"     "<<c5
<<"     "<<c6
    <<"    "<<prom2
      <<( prom2 < 7 ? " NA" : "  A")
      <<"      "<<promParcial;

}


main ()
{

Calificaciones c[' '];

int ans,n,i,j,k;   //porque no reconoce i,j,k??
char regreso='M';
char ciclo='s';

cout<<"\n\n\n\t\t\tCuantos alumnos va a ingresar?\t ";
cin>>n;

while (ciclo=='s')
{

  cout<<"\n\n\n\t\t\tQue desea hacer?\n"
      <<"\n\t\t1.-Ingresar\n"
      <<"\n\t\t2.-Calcular\n"
      <<"\n\t\t3.-Mostrar\n"
      <<"\n\t\t4.-Salir\t\t";
  cin>>ans;
  clrscr();


  switch (ans)
  {

   case 1:

    for ( i=1; i<=n; i++)
    {
     regreso='J';
     cout<<"\n\t\tInstrucciones:  Ingrese valores enteros o decimales\n "
      <<" \t\t\t\tcon el rango del 0 al 10\n"
      <<"\t\tPara el numero de cuenta deberan ser de 6 digitos...\0";

     c[i].acceder();
     c[i].ingresar();

     
     c[i].ingresar2();
    }

   break;

   case 2:

    clrscr();
    for ( j=1; j<=n; j++)
    {

     if(regreso=='M')
     {
      cout<<"\n\aPrimero ingrese calificaciones para despues calcular!";
     }
     else
     {
      clrscr();
      cout<<endl;
      c[j].calcular();
      //clrscr();
      c[j].calcular2();
      //promGral[j]=?????


     }

     getchar();

    }
    clrscr();

   break;

   case 3:

    clrscr();
    cout<<endl<<"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛMATERIA1ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
              <<"MATERIA2ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"<<endl<<endl;
    //cout<<"\t\tMATERIA1\t\t\t\tMATERIA2 "<<endl;
    cout<<"ÛNo_CtaÛ"
     <<"  ÛC1Û"
     <<"   ÛC2Û"
     <<"   ÛC3Û"
     <<"   ÛPromÛ"
     <<"      ÛC1Û"
     <<"   ÛC2Û"
     <<"   ÛC3Û"
     <<"   ÛPromÛ"
     <<"   ÛPGralÛ";

    for ( k=1; k<=n; k++)
    {

     if(regreso=='M')
     {
      cout<<"\n\a\nNO hay datos para mostrar!!!";
     }
     else
     {
       //mat1[k].mostrarDatos();
       //cout<<"     ";
       c[k].mostrar();
       /*cout<<"      ";
       mat2[k].mostrar();*/
     }

     getchar();

    }
    clrscr();

   break;

   case 4:

    clrscr();
    cout<<"\n\n\t\tSaliendo...\a\a\a";
    ciclo='a';

   break;

   default:

    cout<<"\n\n\n\n\t\t\aOpcion invalida vuelva a intentarlo...";

   break;

  }

}

getchar();

vangodp

pues si lo que quieres es acceder a la variable miembro de la clase       float promParcial;


en public pones esta funcion: float getProm() const{ return promParcial; }

y llamala desde donde quiera  :huh:

o sino se mas especifico XD