Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: samchg en 01 de Junio 2012, 16:24

Título: C++ programacion Modular programa que simula una calculador cplusplus
Publicado por: samchg en 01 de Junio 2012, 16:24
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;

}

Título: Re:AYUDA EN C++ programacion Modular ¡Por Favor!
Publicado por: Alex Rodríguez 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;
Título: Re:AYUDA EN C++ programacion Modular ¡Por Favor!
Publicado por: Alex Rodríguez 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");
}