Menú principal

lunes, 7 de septiembre de 2020

Multiplicación de Fracciones Parte 2 - Sobrecarga de operadores (operator*) - C++

Una vez entendido el funcionamiento de la Parte 1 del programa, se procede a introducir la sobrecarga de operadores. Esto significa que en vez de declarar la función multiplica como friend Fraccion multiplica(const Fraccion &f1, const Fraccion &f2); se declarará como se muestra en la linea 34 del código que se muestra a continuación. Se puede apreciar como el nombre de la función se sustituye por operator*, esto es la sobrecarga de operadores. Esto provocará que el código incluido en el main sea mucho mas sencillo y legible. Ahora en vez de llamar a la función como hacíamos anteriormente, podremos escribir fMulti=f1*f2; como se muestra en la linea 63.


 1 #include <iostream>
 2  using namespace std;
 3  
 4  class Fraccion
 5  {
 6      int n,d;
 7  
 8  public:
 9      Fraccion(int num=0, int den=1)
10      {
11          n=num;
12          d=den;
13      }
14      //Set para introducir los datos de las fracciones
15      void SetN(int num)
16      {
17          n=num;
18      }
19      void SetD(int den)
20      {
21          d=den;
22      }
23      //Para diferenciar el num y den de cualquier fracion y sacarlo por pantalla
24      int GetN()
25      {
26          return n;
27      }
28  
29      int GetD()
30      {
31          return d;
32      }
33      //Friend para que la funcion pueda acceder a la clase
34      friend Fraccion operator*(const Fraccion &f1, const Fraccion &f2);
35  };
36  
37  Fraccion operator*(const Fraccion &f1, const Fraccion &f2)
38  {
39      Fraccion result;
40      result.n=f1.n*f2.n;
41      result.d=f1.d*f2.d;
42      return result;
43  
44      ///Otra opcion
45      /*Fraccion result(f1.n*f2.n , f1.d*f2.d);
46      return result;*/
47  }
48  int main()
49  {
50      Fraccion f1, f2, fMulti;
51      int n1,n2,d1,d2;
52  
53      cout << "Intro primer numerador: "; cin >>n1;
54      cout << "Intro primer denominador: "; cin >>d1;
55      cout << endl << "Intro segundo numerador: "; cin >>n2;
56      cout << "Intro segundo denominador: "; cin >>d2;
57  
58      f1.SetN(n1);
59      f1.SetD(d1);
60      f2.SetN(n2);
61      f2.SetD(d2);
62  
63      fMulti=f1*f2;
64  
65      cout<<endl<<"La multiplicacion es: "<<fMulti.GetN()<<" / "<<fMulti.GetD()<<endl;
66  }

No hay comentarios:

Publicar un comentario