Advertisement
Guest User

Untitled

a guest
Jul 20th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include "funciones.h"
  4.  
  5. using namespace std;
  6.  
  7. const int Distancia::kilometros=0;
  8. const int Distancia::yardas=1;
  9. const int Distancia::pulgadas=2;
  10. const int Distancia::metros=3;
  11. const char Distancia::unid[4][30]= {"kilometros","yardas","pulgadas","metros"};
  12. const float Distancia::conver[4]= {0.001,1.09361,39.3701,1};
  13.  
  14. Distancia::Distancia(float dist,int uni)
  15. {
  16. this->distancia=dist;
  17. this->unidad=uni;
  18. }
  19.  
  20. ostream & operator<<(ostream &salida,const Distancia &dist)
  21. {
  22. salida<<dist.distancia<<" "<<Distancia::unid[dist.unidad];
  23. return salida;
  24. }
  25.  
  26. Distancia Distancia::operator+(const Distancia &dist) const
  27. {
  28. float aux;
  29. if(this->unidad!=dist.unidad)
  30. aux=(dist.distancia/Distancia::conver[dist.unidad])+(this->distancia/Distancia::conver[this->unidad]);
  31. else
  32. aux=dist.distancia+this->distancia;
  33. return Distancia(aux,((this->unidad!=dist.unidad)?(Distancia::metros):(this->unidad)));
  34. }
  35.  
  36. Distancia & Distancia::convertir(int unidad)
  37. {
  38. if(this->unidad!=unidad)
  39. {
  40. this->unidad/=Distancia::conver[this->unidad];
  41. this->unidad*=Distancia::conver[unidad];
  42. this->unidad=unidad;
  43. }
  44. return *this;
  45. }
  46.  
  47. istream &operator>>(istream &entrada,Distancia &m)
  48. {
  49. entrada>>m.distancia>>m.unidad;
  50. return entrada;
  51. }
  52.  
  53. Distancia operator+(float num,const Distancia &dist)
  54. {
  55. float aux;
  56. if(dist.distancia!=Distancia::metros)
  57. aux=dist.distancia/Distancia::conver[dist.unidad]+num;
  58. else
  59. aux=dist.distancia+num;
  60. return Distancia(aux,Distancia::metros);
  61. }
  62.  
  63. bool Distancia::operator>=(const Distancia &dist) const
  64. {
  65. float aux1,aux2;
  66. if(this->unidad!=dist.unidad)
  67. {
  68. aux2=this->distancia/Distancia::conver[this->unidad];
  69. aux1=dist.distancia/Distancia::conver[dist.unidad];
  70. }else
  71. {
  72. aux2=this->distancia;
  73. aux1=dist.distancia;
  74. }
  75. return aux1>=aux2;
  76. }
  77.  
  78. Distancia &Distancia::operator+=(const Distancia &dist)
  79. {
  80. float aux;
  81. if(this->unidad!=dist.unidad)
  82. {
  83. aux=dist.distancia/Distancia::conver[dist.unidad];
  84. aux*=Distancia::conver[this->unidad];
  85. this->distancia+=aux;
  86. }else
  87. this->distancia+=dist.distancia;
  88. return *this;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement