ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Calculadora en C++


Enviado por   •  11 de Febrero de 2016  •  Apuntes  •  578 Palabras (3 Páginas)  •  138 Visitas

Página 1 de 3

#include "LCP.cpp"

#include

//int ItemMaxEn = 20;

class CsCalculador{

public:

  CsCalculador(void);

  void CorreFa(void);

  void DespejaFa(void);

private:

  CsPilas LaPilaCsPilas;

  void IngresaFa(double NoDb);

  bool ObtDosOpdosFabo(double &Opdo1Db, double &Opdo2Db);

  void CalculaFa(char OpdoCa);

};

//

CsCalculador::CsCalculador(void){}

// Almacena en la pila un valor

void CsCalculador::IngresaFa(double NoDb){

  LaPilaCsPilas.AgregaFa(NoDb);

}

//

bool CsCalculador::ObtDosOpdosFabo(double &Opdo1Db, double &Opdo2Db){

  if(LaPilaCsPilas.EsVaciaFabo()){

    cerr << "Operador omitido" << endl;

    return false;

  }

  Opdo1Db = LaPilaCsPilas.RemueveFaGn(); // remueve el opdo derecho

  if(LaPilaCsPilas.EsVaciaFabo()){

    cerr << "Operador omitido" << endl;

    return false;

  }

  Opdo2Db = LaPilaCsPilas.RemueveFaGn(); // remueve el opdo izquierdo

  return true;

}

//

void CsCalculador::CalculaFa(char OpdoCa){

  bool Rdobo;

  double Opdo1Db, Opdo2Db;

 

  Rdobo = ObtDosOpdosFabo(Opdo1Db, Opdo2Db);

  if(Rdobo == true)

    switch(OpdoCa){

      case '+': LaPilaCsPilas.AgregaFa(Opdo2Db+Opdo1Db);

                break;

      case '-': LaPilaCsPilas.AgregaFa(Opdo2Db-Opdo1Db);

                break;

      case '*': LaPilaCsPilas.AgregaFa(Opdo2Db*Opdo1Db);

                break;

      case '/': if(Opdo1Db == 0.0){

                  cerr << "Division por 0";

                  LaPilaCsPilas.DespejaPilaFa();

                }else

                  LaPilaCsPilas.AgregaFa(Opdo2Db/Opdo1Db);

                break;

      case '^': LaPilaCsPilas.AgregaFa(pow(Opdo2Db, Opdo1Db));

                break;

    }

  else

    LaPilaCsPilas.DespejaPilaFa();

}//

void CsCalculador::CorreFa(void){

  char CaraCa;

  double NvoOpdoDb;

  while(cin >> CaraCa, CaraCa != '='){

    switch(CaraCa){

      case '+':

      case '-':

      case '*':

      case '/':

      case '^':

        CalculaFa(CaraCa);

        break;

      default:

        cin.putback(CaraCa);

        cin >> NvoOpdoDb;

        IngresaFa(NvoOpdoDb);

        break;

    }

  }

  if(!LaPilaCsPilas.EsVaciaFabo())

    cout << "Resultado: " << LaPilaCsPilas.TopeFaGn() << endl;  

...

Descargar como (para miembros actualizados)  txt (2.9 Kb)   pdf (46 Kb)   docx (8.6 Kb)  
Leer 2 páginas más »
Disponible sólo en Clubensayos.com