Autor Tema: C++ programacion Modular programa que simula una calculador cplusplus  (Leído 10401 veces)

samchg

  • Visitante
Ayudenme con este programita por favor!! Necesito pasarlo a programacion modular!! c++

Código: [Seleccionar]
class calculadora
{
float numero,total,anterior;
char op;
public:

void vacia();
void opcion();
void operaciones();

calculadora(float n, float t, float ta)
{
numero=n;
total=t;
anterior=ta;
}
};

void calculadora::opcion()
{
char opcion;
cin>>opcion;
op=opcion;
}

void calculadora::vacia()
{
float n;
cin>>n;
total=n;
}

void calculadora::operaciones()
{
float n;
do
if (op=='+')
{
system("cls");
anterior=total;
cin>>n;
total=total+n;
cout<<"= "<<total;
n=0;
cin>>op;
}
else
if (op=='-')
{
system("cls");
anterior=total;
cin>>n;
total=total-n;
cout<<"= "<<total;
n=0;
cin>>op;
}
else
if (op=='*')
{
system("cls");
anterior=total;
cin>>n;
total=total*n;
cout<<"= "<<total;
n=0;
cin>>op;
}
else
if (op=='/')
{
system("cls");
anterior=total;
cin>>n;
if (n==0)
{
cout<<"Prohibido dividir entre cero, ingrese otro numero "<<endl;
cin>>n;
}
else
{
total=total/n;
cout<<"= "<<total;
n=0;
cin>>op;
}
}
else
if (op=='e')
{
system("cls");
total=anterior;
cout<<"= "<<total;
cin>>op;
}
else
if (op=='c')
{
system("cls");
total=0;
cout<<"= "<<total;
cin>>op;
}
while((op=='+')||(op=='-')||(op=='*')…

}

int main()
{
cout<<"Calculadora: Ingrese las operaciones que desea realizar"<<endl;
cout<<"Pulse c para borrar ultima operacion "<<endl;
cout<<"Pulse e para borrar todo "<<endl;
cout<<"Pulse cualquier otra tecla para salir "<<endl;
calculadora c(0,0,0);
c.vacia();
c.opcion();
c.operaciones();
cout<<" "<<endl;

}

« Última modificación: 11 de Mayo 2015, 18:50 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2052
    • Ver Perfil
Re:AYUDA EN C++ programacion Modular ¡Por Favor!
« Respuesta #1 en: 01 de Junio 2012, 21:06 »
Hola samchg, para hacer esto necesitas saber programar bajo programación "tradicional" imperativa o estructurada, así como con programación orientada a objetos.

La forma más fácil que veo es: los campos de la clase calculadora ya no serán campos de una clase, sino variables globales.

Los métodos de la clase ya no serán métodos, sino funciones o procedimientos.

Ya no crearás un objeto en el main ni invocarás sus métodos, sino simplemente invocarás procedimientos o funciones. El código sería algo así (no lo he probado, habría que probarlo):

Código: [Seleccionar]
/* Los campos de la clase los escribimos como variables */

float numero,total,anterior;
char op;


/* Los métodos de la clase los definiremos como funciones */

/* El procedimiento calculadora recibe valores y los asigna a variables */
calculadora(float n, float t, float ta)
{
numero=n;
total=t;
anterior=ta;
}
};

/* El procedimiento opcion */
void opcion()
{
char opcion;
cin>>opcion;
op=opcion;
}

/* El procedimiento vacia */
void vacia()
{
float n;
cin>>n;
total=n;
}

/* El procedimiento operaciones */
void operaciones()
{
float n;
do
if (op=='+')
{
system("cls");
anterior=total;
cin>>n;
total=total+n;
cout<<"= "<<total;
n=0;
cin>>op;
}
else
if (op=='-')
{
system("cls");
anterior=total;
cin>>n;
total=total-n;
cout<<"= "<<total;
n=0;
cin>>op;
}
else
if (op=='*')
{
system("cls");
anterior=total;
cin>>n;
total=total*n;
cout<<"= "<<total;
n=0;
cin>>op;
}
else
if (op=='/')
{
system("cls");
anterior=total;
cin>>n;
if (n==0)
{
cout<<"Prohibido dividir entre cero, ingrese otro numero "<<endl;
cin>>n;
}
else
{
total=total/n;
cout<<"= "<<total;
n=0;
cin>>op;
}
}
else
if (op=='e')
{
system("cls");
total=anterior;
cout<<"= "<<total;
cin>>op;
}
else
if (op=='c')
{
system("cls");
total=0;
cout<<"= "<<total;
cin>>op;
}
while((op=='+')||(op=='-')||(op=='*')…

}

/* El main del programa */

int main()
{
cout<<"Calculadora: Ingrese las operaciones que desea realizar"<<endl;
cout<<"Pulse c para borrar ultima operacion "<<endl;
cout<<"Pulse e para borrar todo "<<endl;
cout<<"Pulse cualquier otra tecla para salir "<<endl;
calculadora (0,0,0);
vacia();
opcion();
operaciones();
cout<<" "<<endl;
« Última modificación: 21 de Septiembre 2014, 12:06 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2052
    • Ver Perfil
Re:AYUDA EN C++ programacion Modular ¡Por Favor!
« Respuesta #2 en: 02 de Junio 2012, 01:30 »
Hola, lo primero que tengo que pedirte es que no repitas la misma consulta en distintos sitios del foro. Resulta molesto encontrar las cosas repetidas.

Este programa que te pongo aquí debajo a mí sí me corre, ¿te has parado a estudiar por qué no te corría o simplemente ves que no corre y pretendes que alguien te lo resuelva?


Código: [Seleccionar]
#include <iostream.h>
#include <stdlib.h>

//using namespace std;


   float numero,total,anterior;
   char op;


     void calculadora(float n, float t, float ta)
      {
    numero=n;
    total=t;
    anterior=ta;
    }


      void opcion()
       {
          char opcion;
             cin>>opcion;
             op=opcion;
       }

       void vacia()
       {
          float n;
          cin>>n;
          total=n;
       }

       void operaciones()
       {
          float n;
   do
           if (op=='+')
             {
               system("cls");
               anterior=total;
                  cin>>n;
               total=total+n;
               cout<<"= "<<total;
               n=0;
               cin>>op;
             }
          else
          if (op=='-')
             {
               system("cls");
                anterior=total;
                  cin>>n;
               total=total-n;
               cout<<"= "<<total;
               n=0;
               cin>>op;
                }
         else
      if (op=='*')
          {
             system("cls");
             anterior=total;
               cin>>n;
            total=total*n;
            cout<<"= "<<total;
            n=0;
            cin>>op;
          }
          else
         if (op=='/')
           {
             system("cls");
             anterior=total;
               cin>>n;
               if (n==0)
               {
                  cout<<"Prohibido dividir entre cero, ingrese otro numero "<<endl;
                  cin>>n;
               }
               else
               {
               total=total/n;
               cout<<"= "<<total;
               n=0;
               cin>>op;
            }
         }
         else
           if (op=='e')
            {
            system("cls");
            total=anterior;
            cout<<"= "<<total;
            cin>>op;
          }
         else
           if (op=='c')
         {
            system("cls");
            total=0;
            cout<<"= "<<total;
            cin>>op;
         }
   while((op=='+')||(op=='-')||(op=='*')||(op=='/')||(op=='c')||(op=='e')||(op=='c'));

       }

int main()
{
 cout<<"Calculadora: Ingrese las operaciones que desea realizar"<<endl;
 cout<<"Pulse  c  para borrar ultima operacion "<<endl;
 cout<<"Pulse  e  para borrar todo "<<endl;
 cout<<"Pulse  cualquier otra tecla para salir "<<endl;
 calculadora (0,0,0);
 vacia();
 opcion();
 operaciones();
 cout<<" "<<endl;
 cout<<"Hasta luego "<<endl;
 system("pause");
}
« Última modificación: 21 de Septiembre 2014, 12:06 por Alex Rodríguez »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".