Advertisement
fkrisz

nem_oo.h

Feb 21st, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. #ifndef NEM_OO_H
  2. #define NEM_OO_H
  3. /**
  4. * file nem_oo.h (latin2 kodolasu fajl)
  5. *
  6. * A C++ nem OO bővítéseinek gyakorlásához.
  7. *
  8. */
  9.  
  10. #include <cmath>
  11. #include <iostream>
  12. #include "memtrace.h"
  13.  
  14.  
  15. namespace sajat { /// saját névtér
  16.  
  17. /**
  18. * Saját atoi.
  19. * Számjegysorozat átalakítása int-re
  20. * A számjegysorozat végét white space, vagy sztring vége ('\0') jelzi.
  21. * Ha a számjegysorozatban olyan számjegy, vagy betű fordul elő,
  22. * ami nem érvényes az adott számrendszerben, az hiba.
  23. * Hiba esetén egy const char* típusú kivételt kell dobni, melynek értéke
  24. * az Ön neptun azonosítója!
  25. * @param p - pointer a sztringre
  26. * @param base - számrendszer alapja (0-10)
  27. * @return - base számrendszerben értelmezett szám
  28. */
  29. int atoi(const char *p, int base = 10);
  30.  
  31. /**
  32. * Sajat strcat.
  33. * Két cstrring összefűzése
  34. * Dinamikusan foglal helyet
  35. * @param p1 - pointer az első sztringre
  36. * @param p2 - pointer az másik sztringre
  37. * @return - dinamikusan foglalt terület címe, ahova az eredmény kerül (hívónak kell felszabadítania)
  38. */
  39. char *strcat(const char *p1, const char *p2);
  40.  
  41. /**
  42. * unique
  43. * A paraméterként kapott két pointer közötti karaktersorozatból kihagyja az egymás után ismétlődő
  44. * karaktereket (char). A sorozatot az eredeti helyén hagyja!
  45. * @param first - pointer az adatok kezdetére
  46. * @param last - pointer, ami az utolsó adat után mutat
  47. * @return - pointer, ami az új sorozat utolsó adata után mutat (a kihagyással rövidült a sorozat)
  48. */
  49. char *unique(char *first, char *last);
  50.  
  51. /**
  52. * Az alább megvalósított adatstruktúra és a hozzá tartózó függvények
  53. * A max sablonnal kapcsolatos feladat megvalósításához kellenek.
  54. *
  55. * Értse meg a működésüket!
  56. * A feladat részletes leírását a max.hpp fájlban találja, és abban
  57. * valósítsa meg a várt sablont és annak specializációját!
  58. */
  59.  
  60. /**
  61. * Adatstruktúra komplex szám tárolásához
  62. */
  63. struct Komplex {
  64. double re; // valós rész
  65. double im; // képzetes rész
  66. };
  67.  
  68. /**
  69. * Komplex szám abszolút értéke
  70. * @param k - komplex szám
  71. * @return valós - a komplex szám abszolút értéke
  72. */
  73. inline double absKomplex(const Komplex& k) {
  74. return sqrt(k.re*k.re + k.im*k.im);
  75. }
  76.  
  77. /**
  78. * Komplex szám kiírása egy ostream típusú adatfolyamra
  79. * @param os - ostream típusú objektum
  80. * @param k - komplex szám
  81. * @return os
  82. */
  83. inline std::ostream& operator<<(std::ostream& os, const Komplex& k) {
  84. os << "(" << k.re << "," << k.im << "j)";
  85. return os;
  86. }
  87.  
  88. /*Valahogy így kellene valamit a >-szal kezdeni?
  89. Komplex operator>(const Komplex& k) const {
  90.  
  91. return max;
  92. }*/
  93.  
  94. template <typename T> T max(T a, T b) {
  95. return (a > b ? a : b);
  96. }
  97.  
  98. template <sajat::Komplex> max (sajat::Komplex a, sajat::Komplex b){
  99. return (sajat::absKomplex(a) > sajat::absKomplex(b) ? a : b);
  100. }
  101.  
  102. }/// ---------- névtér vége ---------------
  103.  
  104. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement