Calculadora ayuda Solucionado

Iniciado por nolasco281, 26 Enero 2014, 03:13 AM

0 Miembros y 2 Visitantes están viendo este tema.

nolasco281

//clase de encabezado

#ifndef OPERACIONES_H
#define OPERACIONES_H

class Operaciones
{
   private:
       double numero1, numero2;
       
   public:
       void setNumero1(double);
       void setNumero2(double);
       double getNumero1();
       double getNumero2();
       
       //Otras funciones
       double getSuma();
       double getResta();
       double getMultiplicacion();
       double getDivision();
};

#endif

///////////////////////////////////////////////////////////////////
//Clase de implementacion

#include "Operaciones.h"
#include <iostream>

using namespace std;

void Operaciones::setNumero1(double num1)
{
   numero1 = num1;
}

void Operaciones::setNumero2(double num2)
{
   numero2 = num2;
}

double Operaciones::getNumero1()
{
   return numero1;
}

double Operaciones::getNumero2()
{
   return numero2;
}

////////////////////////////////////////////////////////
//Otras funciones
////////////////////////////////////////////////////////

double Operaciones::getSuma()
{
   return numero1+numero2;
}

double Operaciones::getResta()
{
   return numero1-numero2;
}

double Operaciones::getMultiplicacion()
{
   return numero1*numero2;
}

double Operaciones::getDivision()
{
   if (numero2 = 0)
   {
       cout << "La divicion entre ceros no es valida\n";
   }
   else
   return numero1/numero2;
}

////////////////////////////////////////////////////////////
// clase principal


#include "Operaciones.h"
#include "Operaciones.cpp"
#include <iostream>
#include <stdlib.h>

void menu();
void Operacion(int);

int main()
{
   menu();
   system("pause");
   return 0;
}

void menu()
{
   Operaciones OperacionesOb;
   int opcion;
   double numero1, numero2;
   
   while(opcion !=5)
   {
       system("cls");
       cout << "1. suma\n"
            << "2. resta\n"
            << "3. Multiplicacion\n"
            << "4. division\n"
            << "5. salir\n"
            << "Elija una opcion: ";
            cin >> opcion;
           
       switch(opcion)
       {
           case 1:
               system("cls");
               Operacion(1);
               system("pause");
               break;
               
           case 2:
               system("cls");
               Operacion(2);
               system("pause");
               break;
           
           case 3:
               system("cls");
               Operacion(3);
               system("pause");
               break;
           
           case 4:
               system("cls");
               Operacion(4);
               system("pause");
               break;
           
           case 5:
               break;
               
           default:
               
               cout << "La Opcion es incorrecta.\n";
               system("pause");
               break;
           
       }
   }
}

void Operacion(int a)
{
   Operaciones OperacionesOb;
   double numero1, numero2;
   
   cout << "Ingrese el primer numero: ";
   cin >> numero1;
   
   cout << "Ingrese el segundo numero: ";
   cin >> numero2;
   
   OperacionesOb.setNumero1(numero1);
   OperacionesOb.setNumero2(numero2);
   
   if(a==1)
   {
       cout << "La suma es: " << OperacionesOb.getSuma() << "\n";
   }
   else if (a ==2)
   {
       cout << "La Resta es: " << OperacionesOb.getResta() << "\n";
   }
   else if (a ==3)
   {
       cout << "La Multiplicacion es: " << OperacionesOb.getMultiplicacion() << "\n";
   }
   else if(a ==4)
   {
       cout << "La Division es: " << OperacionesOb.getDivision() << "\n";
   }
}


Hola, en lo que necesito ayuda es que no quisiera estar repitiendo la función de operación, solo deseo que esta función reciba una vez los datos dependiendo de la operación que se desee y que me la retorne con la función getSuma o la resta según su operación.

Pero cuando pongo el getSuma en el switch la respuesta es un número muy alto.

No sé cómo hacer eso saludos y gracias.

PD: en pocas palabras por si no me entienden lo que quiero es no estar repitiendo la función Operación.
Lo que se puede imaginar... se puede programar.

leosansan


Desactivando los include de Operaciones.h y Operaciones.cpp y poniendo la barra invertida "\" al final de las estrellitas el código funciona correctamente.

¿Podrías concretar menor la duda y/o problema que tienes?


¡¡¡¡ Saluditos! ..... !!!!



nolasco281

#2
Primero que nada gracias por contestar.

1. lo de los comentarios solo era para separar las clases y el archivo de encabezado.
   y que ustedes supieran donde empieza cada una.

2. Si te fijas tengo que declarar una función para cada operación. Las cuales solo he hecho Operación -> para la suma y Operacion1 -> para la resta.

3. lo que deseo es hacer una solo función que reciba dos número. Y los reciban las funciones respectivamente como las getSuma para la suma, getResta para la resta, ..... Sin necesidad de estar creando una función para cada operación.

4. Los includes no se pueden desactivar ya que entonces la principal no sabría a donde mandar los datos el chiste de programar en clases es ese. Recuerda que los get y los set deben de recibir los valores de la principal procesarlos y devolverlos.
Lo que se puede imaginar... se puede programar.

dRak0

Utiliza punteros a funciones...

nolasco281

Podrías darme algún ejemplo amigo.

O la sintaxis de cómo hacerlo más o menos.

Saludos y gracias por contestar.
Lo que se puede imaginar... se puede programar.

dRak0

Hola mira para no tener que escribirte todo el codigo devuelta con punteros a funciones , xq no le pasas un valor a la funcion Operacion...

Por ejemplo... Operacion(1) =suma,Operacion(2)=resta y asi sucesivamente. Entonces en la funcion operacion checkeas que numero se paso y cambias el resultado dependiendo de eso , se entiende?

nolasco281

Pruebo y te respondo gracias por la ayuda.
Lo que se puede imaginar... se puede programar.

dRak0

Esta es la idea..

void Operacion(int)

void Operacion(int a)
{
    Operaciones OperacionesOb;
    double numero1, numero2;
   
    cout << "Ingrese el primer numero: ";
    cin >> numero1;
   
    cout << "Ingrese el segundo numero: ";
    cin >> numero2;
   
    OperacionesOb.setNumero1(numero1);
    OperacionesOb.setNumero2(numero2);
    if(a==1){
    cout << "La suma es: " << OperacionesOb.getSuma() << "\n";
    }
    else if(a==2)
     {
   cout << "La resta es: " << OperacionesOb.getResta() << "\n";
      } else if ....   
}


y en el switch pasas el valor , por ejemplo case 1: Operacion(1) y asi sucesivamente.

Es una solucion a lo que pedias , seguro que no es la mas optima a este problema.

nolasco281

Ya capte una vez lo termine y lo deje bien lo comento acá y pongo solucionado.

Mil gracias y a medida lo mejore lo modificare mil gracias por ayudarme.

PD: Créeme se agradece la ayuda.
Lo que se puede imaginar... se puede programar.

nolasco281

#9
Funcionoooooooo!!!!!!!!!

aah gracias no se me había ocurrido eso gracias enserio ya corrijo el código.

buscare una mejor solucion gracias. saludos jednak
Lo que se puede imaginar... se puede programar.