jueves, 7 de julio de 2011

Deitel_C++_6.7 (Operaciones Básicas con Fracciones en C++)

Cree una clase llamada Rational que realice operaciones aritméticas con fracciones. Escriba un programa controlador que pruebe la clase. Mediante variables enteras represente los dators private de la clase (numerador,denominador). Proporcione una función constructor que permita que un objeto de esta clase sea inicializado cuando se declare. El constructor debera contener valores predeterminados para el caso en el que no se suministren inicializadores y debera almacenar la fracción en forma reducida (es decir la fracción se deberá almacenar en el objeto como 1 en el numerador y 2 en el denominador)
Proporcione funciones miembro public para lo siguiente:
a) Suma de dos numeros Rational. El resultado debera almacenarse en forma reducida.
b) Resta de dos numeros Rational. El resultado debera almacenarse en forma reducida.
c) Multiplicación de dos numeros Rational. El resultado debera almacenarse en forma reducida.
d) División de dos numeros Rational. El resultado deberá almacenarse en forma reducida.
e) Impresión de numeros Rational en la forma a/b, donde a es el numerador y b es el denominador.
f) Impresión de numeros Rational en formato de punto flotante.



#include <iostream>
  using namespace::std;

  class Rational

  {        // Abre la clase Rational
  public:
  Rational( float = 0, float = 0);
  void Recibe();
  void Suma(float, float, float, float);
  void Resta(float, float, float, float);
  void Multiplicacion(float, float, float, float);
  void Division(float, float, float, float);
  void Impresion();
  void Imprime_Flotante();
  float Numerador();
  float Denominador();

  private:
  float a;
  float b;
  };        // Cierra la clase Rational 

 ////////////////////////////////////////////////////////////////////////
 // CONSTRUCTOR
 ///////////////////////////////////////////////////////////////////////

  Rational::Rational( float s, float t)
  {      // Abre constructor
  a = s;
  b = t;
  }        // Cierra constructor

 ////////////////////////////////////////////////////////////////////////
 // FUNCION MCD 
 ///////////////////////////////////////////////////////////////////////

  int mcd( int u, int v)
  
   // Atencion: Debe recibir solo numeros positivos
  {          // Abre funcion mcd
   int t;

   while ( u > 0 )
   {    // Abre while

   if ( u < v )
   {
   t = u;
   u = v;
   v = t;
   }

  u = u - v;
   }    // Cierra while    

  return v;
  }           // Cierra funcion mcd

  /////////////////////////////////////////////////////////////////////////
  // FUNCION MIEMBRO SUMA 
  /////////////////////////////////////////////////////////////////////// 

 void Rational::Suma( float num1, float num2, float num3, float num4)

  {         // Abre funcion miembro suma

   float numerador = num1*num4 + num2*num3;
   float denominador = num2*num4;
   int auxiliar = mcd(numerador, denominador);

   cout << "\nLa suma es " << numerador/auxiliar << " / " 
        << denominador/auxiliar << endl; 
   cout << "\nLa suma en notacion decimal es: "<< numerador/denominador<< endl;     

  }         // Cierra funcion miembro suma

  /////////////////////////////////////////////////////////////////////
  // FUNCION MIEMBRO RESTA 
  ///////////////////////////////////////////////////////////////////////

  void Rational::Resta( float n1, float n2, float n3, float n4)

  {    // Abre funcion miembro resta

   float numerador = n1*n4 - n2*n3;
   float denominador = n2*n4; 
   int auxiliar = mcd( numerador, denominador );
   cout << "\nLa diferencia de los numeros es: " 
        << numerador/auxiliar << " / " << denominador/auxiliar << endl;
  cout <<"\nLa diferencia en notacion decimales es: " << numerador/denominador
       << endl;

  }     // Cierra funcion miembro resta

  /////////////////////////////////////////////////////////////////////
  // FUNCION MIEMBRO IMPRIME_FLOTANTE
  ///////////////////////////////////////////////////////////////////////

   void Rational::Imprime_Flotante()

   {        // Abre funcion Imprime_Flotante
   cout << "\nLa suma es: " << endl;
   }        // Cierra funcion Imprime_Flotante

  ////////////////////////////////////////////////////////////////////////
  // FUNCION MIEMBRO MULTIPLICACION
  ///////////////////////////////////////////////////////////////////////

   void Rational::Multiplicacion( float m1, float m2, float m3, float m4)

  {         // Abre funcion miembro Multiplicacion

   float numerador = m1*m3;
   float denominador = m2*m4;  
   int auxiliar = mcd( numerador, denominador);
   cout << "\nLa multiplicacion es: " << numerador/auxiliar 
        << " / " << denominador/auxiliar << endl;
   cout <<"\nLa multiplicacion en notacion decimal es: " <<numerador/denominador
      << endl;

  }           // Cierra funcion miembro Multiplicacion 

  ///////////////////////////////////////////////////////////////////////
  // FUNCION MIEMBRO DIVIDE
  //////////////////////////////////////////////////////////////////////

  void Rational::Division(float nm1, float nm2, float nm3, float nm4)

   {       // Abre funcion miembro Division
   
   float numerador = nm1*nm4;
   float denominador = nm3*nm2;
   int auxiliar = mcd( numerador, denominador );
   cout << "\nLa division es: "
        << numerador/auxiliar << " / " << denominador/auxiliar << endl;
   cout <<"\nLa division en notacion decimal es: "
        << numerador/denominador << endl;

   }         // Cierra funcion miembro Division

  //////////////////////////////////////////////////////////////////////
  // FUNCION MIEMBRO RECIBE
  //////////////////////////////////////////////////////////////////////

  void Rational::Recibe()

  {           // Abr

  cout <<"\nPor favor introduzca el numerador: " << endl;
  cin >> a;
  cout <<"\nPor favor introduzca el denominador:" << endl;
  cin >> b; 

  }

  //////////////////////////////////////////////////////////////////////////
  // FUNCION MIEMBRO NUMERADOR
  /////////////////////////////////////////////////////////////////////////

  float Rational::Numerador()

  {          // Abre funcion miembro Numerador
   return a;
  }          // Cierra funcion miembro Numerador

  //////////////////////////////////////////////////////////////////////////
  // FUNCION MIEMBRO DENOMINADOR
  /////////////////////////////////////////////////////////////////////////

  float Rational::Denominador()

  {          // Abre funcion miembro Denominador 
   return b;
  }          // Cierra funcion miembro Denominador 

 ///////////////////////////////////////////////////////////////////////////
 //MAIN
 ////////////////////////////////////////////////////////////////////////

  int main()

  {           // Abre main

   Rational numero1;
   numero1.Recibe();
   Rational numero2;
   numero2.Recibe();
   Rational numero;
   numero.Suma( numero1.Numerador(), numero1.Denominador(), numero2.Numerador(),numero2.Denominador());
   numero.Resta( numero1.Numerador(), numero1.Denominador(), numero2.Numerador(),numero2.Denominador());
   numero.Multiplicacion( numero1.Numerador(), numero1.Denominador(), numero2.Numerador(),numero2.Denominador());
   numero.Division( numero1.Numerador(), numero1.Denominador(), numero2.Numerador(),numero2.Denominador());

   return 0;

  }             // Cierra main 


2 comentarios:

Related Posts Plugin for WordPress, Blogger...