davidcastrosalinas

20201023 Utilización de Templates

Oct 22nd, 2020
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.19 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. /**parte 1 : Sobrecarga de funciones simples **/
  6. //https://docs.microsoft.com/es-es/cpp/c-language/cpp-integer-limits?view=vs-2019
  7.  
  8. //-2147483648 a 2147483647
  9. int suma(int x, int y){
  10.     cout <<"[paso por int]";
  11.     return x + y;
  12. }
  13.  
  14. float suma(float x, float y){
  15.     cout <<"[paso por float]";
  16.     return x + y;
  17. }
  18.  
  19. bool suma(bool x, bool y){
  20.     cout <<"[paso por bool]";
  21.     return x || y;
  22. }
  23.  
  24. /**parte 2 : templates **/
  25. int obtieneMayor(int x, int y){
  26.     return ( x < y ) ? y : x;
  27. }
  28.  
  29. float obtieneMayor(float x, float y){
  30.     return ( x < y ) ? y : x;
  31. }
  32.  
  33. bool obtieneMayor(bool x, bool y){
  34.     return ( x < y ) ? y : x;
  35. }
  36.  
  37.  
  38.  
  39. /**parte 3 : templates **/
  40. template <class Tipo>
  41. Tipo  obtieneMayor(Tipo x, Tipo y){
  42.     cout <<"[template]";
  43.     return ( x < y ) ? y : x;
  44. }
  45.  
  46. /**parte 4 : templates con arreglo**/
  47. template <class Tipo>
  48. Tipo mayorValorEnVector(Tipo v[], int n) {
  49.     Tipo aux;
  50.     aux = v[0];
  51.  
  52.     for(int i = 0; i < n; i++)
  53.         aux = obtieneMayor(v[i], aux);
  54.  
  55.     return aux;
  56. }
  57. #include "exception"
  58. /***Parte 5 clases con templates ***/
  59. template <class Tipo>
  60. class OperacionesBasicas {
  61. public:
  62.     OperacionesBasicas(){
  63.     }
  64.  
  65.     OperacionesBasicas(Tipo _a, Tipo _b):a(_b), b(_b){
  66.     }
  67.     void setValorA(Tipo valor){
  68.         a = valor;
  69.     }
  70.     Tipo getValorA(){
  71.         return a;
  72.     }
  73.  
  74.     void setValorB(Tipo valor){
  75.         b = valor;
  76.     }
  77.     Tipo getValorB(){
  78.         return b;
  79.     }
  80.  
  81.  
  82.     Tipo suma(){
  83.         return a+b;
  84.     }
  85.     Tipo resta(){
  86.         return a-b;
  87.     }
  88.     Tipo multiplicacion(){
  89.         return a * b;
  90.     }
  91.     Tipo division(){
  92.         if(b == 0)
  93.             throw runtime_error("Math error: Attempted to divide by zero\n");
  94.         return a / b;
  95.     }
  96. private:
  97.     Tipo a;
  98.     Tipo b;
  99. };
  100.  
  101.  
  102.  
  103. #include <iomanip>
  104. int main()
  105. {
  106.     //parte 1
  107.     cout <<"\nParte 1: ";
  108.     cout <<"\nsuma: " <<suma(2000,567);
  109.  
  110.     cout << fixed;
  111.     cout << setprecision(2); //#include <iomanip>
  112.     cout <<"\nsuma: " <<suma(2000.0f,567.0f);
  113.     cout <<"\nsuma: " <<suma(2000,567);
  114.     cout <<"\nsuma: " <<suma(true, false);
  115.  
  116.     cout <<"\nParte 2: ";
  117.     cout <<"\nobtieneMayor: " <<obtieneMayor(2000.0f,567.0f);
  118.     cout <<"\nobtieneMayor: " <<obtieneMayor(2000,567);
  119.     cout <<"\nobtieneMayor: " <<obtieneMayor(true, false);
  120.  
  121.     //Parte 3: omitir las funciones obtenerMayor con parámetros primitivos
  122.  
  123.     /**parte 4 : templates con arreglo**/
  124.     int v1[6] = {4, 2, 78, 1, 2, 9};
  125.     float v2[5] = {2.5, 2.2, 7, 0.1, 22.0};
  126.     bool v3[3] = {1, 0, 1};
  127.  
  128.     cout <<"\nObtener mayor valor en arreglo";
  129.     cout <<"\nV1: "<<mayorValorEnVector(v1, 6);
  130.     cout <<"\nV2: "<<mayorValorEnVector(v2, 5);
  131.     cout <<"\nV3: "<<mayorValorEnVector(v3, 3);
  132.     //https://yzhong-cs.medium.com/change-editor-theme-for-code-blocks-windows-linux-mac-92e9c15cbca4
  133.  
  134.  
  135.     /***Parte 5 clases con templates ***/
  136.     OperacionesBasicas<int> o;
  137.     o.setValorA(5);
  138.     o.setValorB(2);
  139.     cout <<"\nsuma: "<<o.suma();
  140.     cout <<"\nresta: "<<o.resta();
  141.     cout <<"\nmultiplicacion: "<<o.multiplicacion();
  142.     cout <<"\ndivision: "<<o.division();
  143.  
  144.  
  145.  
  146.  
  147.     return 0;
  148. }
  149.  
Add Comment
Please, Sign In to add comment