Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip>
  4.  
  5. //using namespace std;
  6.  
  7. class Ugao
  8. {
  9. int stepeni, minute, sekunde;
  10.  
  11. /* void Normaliziraj(){
  12. auto radijani = (stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1)));
  13. while(radijani >= 2 * 4 * atan(1)) radijani -= 2 * 4 * atan(1);
  14. while(radijani < 0) radijani += 2 * 4 * atan(1);*/
  15. // Postavi(radijani);
  16.  
  17. public:
  18. Ugao (double radijani = 0)
  19. {
  20.  
  21. Postavi(radijani);
  22. }
  23. Ugao (int stepeni = 0, int minute = 0, int sekunde = 0)
  24. {
  25.  
  26. Postavi(stepeni, minute, sekunde);
  27. }
  28. void Postavi(double radij)
  29. {
  30. if (radij >= 2 * 4 * atan(1)) {
  31.  
  32.  
  33. while (radij >= 2 * 4 * atan(1)){
  34. radij -= 2 * 4 * atan(1); }
  35. }
  36. else if (radij < 0) {
  37. while (radij < 0) { radij += 2 * 4 * atan(1);
  38. }
  39. }
  40. this -> stepeni = radij * (180 / (4 * atan(1)));
  41. double st = radij * (180 / (4*atan(1)));
  42. this -> minute = (st - stepeni) * 60;
  43. double m = (st - stepeni) * 60;
  44. this -> sekunde = (m - minute) * 60;
  45. }
  46.  
  47.  
  48.  
  49.  
  50. /* int step = (radijani * 180) / (4 * atan(1));
  51.  
  52. while (stepeni < 0) stepeni += 360;
  53. while (stepeni >= 360) stepeni -= 360;
  54. // minute = int((radijani - stepeni)*3600)/60;
  55. double min = ((radijani*(180 / (4*atan(1))) - int(radijani * 180 / 4 * atan(1)))* 60 +1e-6);
  56. int int_minute = int(min);
  57. //minute = ((radijani*(180 / (4*atan(1))) - DajStepene())*60 +1e-6);
  58. while (minute < 0) minute += 360;
  59. while (minute >= 360) minute -= 360;
  60. //sekunde = (((radijani*(180 / (4*atan(1)))- DajStepene() - DajMinute())/60.) * 3600 + 1e-6);
  61. int sec = (min - int_minute) * 60 + 1e-6;
  62. // sekunde = int ((radijani - stepeni)*3600)%60;
  63. while (sekunde < 0) sekunde += 360;
  64. while (sekunde >= 360) sekunde -= 360;
  65. // Normaliziraj();
  66. Postavi(step, int_minute, sec);
  67. }*/
  68. void Postavi(int stepeni, int minute, int sekunde)
  69. {
  70. while (sekunde < 0) {
  71. sekunde += 60;
  72. minute--;
  73. }
  74. while(minute < 0) {
  75. minute += 60;
  76. stepeni--;
  77. }
  78. while (stepeni < 0) stepeni += 360;
  79. while (sekunde >= 60) {
  80. sekunde -= 60;
  81. minute++;
  82. }
  83. while (minute >= 60) {
  84. minute -= 60;
  85. stepeni++;
  86. }
  87.  
  88. while (stepeni >= 360) stepeni -= 360;
  89.  
  90. this -> stepeni = stepeni;
  91. this -> minute = minute;
  92. this -> sekunde = sekunde;
  93. }
  94. /* Ugao::stepeni = stepeni;
  95. Ugao::minute = minute;
  96. Ugao::sekunde = sekunde;
  97. //auto radijani = ((stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1))));
  98. Normaliziraj();*/
  99. // return Ugao(stepeni, minute, sekunde);
  100.  
  101.  
  102. double DajRadijane() const
  103. {
  104.  
  105. double pretvoreno = (stepeni + (minute + sekunde/60.) / 60.);
  106. double radijani = ((4 * atan(1)) / 180) * pretvoreno;
  107.  
  108. if (radijani >= 2 * 4 * atan(1)) {
  109.  
  110.  
  111. // while(radijani < 0) radijani += 2 * 4 * atan(1);
  112. while(radijani >= 2 * 4 * atan(1)) {
  113. radijani -= 2 * 4 * atan(1);
  114. }
  115. }
  116.  
  117. return radijani;
  118. }
  119. void OcitajKlasicneJedinice(int &stepeni, int &minute, int &sekunde)
  120. {
  121. stepeni = this -> stepeni;//DajStepene();
  122. minute = this -> minute;;
  123. sekunde = this -> sekunde;
  124. }
  125. int DajStepene() const
  126. {
  127. // double stepeni(radijani*(180 / (4*atan(1))));
  128. return stepeni;
  129. }
  130. int DajMinute() const
  131. {
  132. // double minute(radijani*(180 / (4*atan(1))));
  133. return minute;//int((minute-DajStepene())*60 +1e-6);
  134. }
  135. int DajSekunde() const
  136. {
  137. // double sekunde(radijani*(180 / (4*atan(1))));
  138. return sekunde;//int((sekunde - DajStepene() - DajMinute()/60.) * 3600 + 1e-6);
  139. }
  140. void Ispisi() const
  141. {
  142. std::cout << std::fixed << std::setprecision(5) << DajRadijane() << std::endl;
  143. // std::cout /*<< std::fixed()*/ << std::setprecision(5) << stepeni << " " << minute << " " << sekunde;
  144. }
  145. void IspisiKlasicno() const
  146. {
  147. std::cout << std::fixed << std::setprecision(5) << DajStepene() << "deg ";
  148. std::cout << std::fixed << std::setprecision(5) << DajMinute() << "min ";
  149. std::cout << std::fixed << std::setprecision(5)<< DajSekunde() << "sec";
  150. }
  151. Ugao &SaberiSa(const Ugao &u)
  152. {
  153. /* auto radijani = ((stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1))));
  154. radijani += u.DajRadijane();
  155. Normaliziraj();*/
  156.  
  157.  
  158. int a = stepeni + u.DajStepene();
  159. int b = minute + u.DajMinute();
  160. int c = sekunde + u.DajSekunde();
  161. Postavi(stepeni, minute, sekunde);
  162. this ->Postavi(a, b, c);
  163. return *this;
  164. }
  165. Ugao &PomnoziSa(double x)
  166. {
  167. /* auto radijani = ((stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1))));
  168. radijani *= x;
  169. Normaliziraj();*/
  170. // Postavi(x * DajStepene(), x * DajMinute(), x * DajSekunde());
  171.  
  172. double rad = this -> DajRadijane();
  173. double a = rad * x;
  174. this -> Postavi(a);
  175. return *this;
  176. }
  177. friend Ugao ZbirUglova(const Ugao &u1, const Ugao &u2);
  178. friend Ugao ProduktUglaSaBrojem( Ugao u, double x);
  179.  
  180. };
  181.  
  182. /*void Ugao::Postavi(int stepeni, int minute, int sekunde)
  183. {
  184. radijani = (stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1)));
  185. Normaliziraj();
  186. }
  187. */
  188. Ugao ZbirUglova(const Ugao &u1, const Ugao &u2)
  189. {
  190. // Ugao u3(u1.DajRadijane() + u2.DajRadijane());
  191. //return u3;
  192. //return Ugao(u1.DajRadijane() + u2.DajRadijane());
  193.  
  194. int a = u1.DajSekunde() + u2.DajSekunde();
  195. int b = u1.DajMinute() + u2.DajMinute();
  196. int z= u1.DajStepene() + u2.DajStepene();
  197. /* while (u3.sekunde < 0) {
  198. u3.sekunde += 60;
  199. u3.minute--;
  200. }
  201. while (u3.sekunde >= 60) {
  202. u3.sekunde -= 60;
  203. u3.minute++;
  204. }
  205. while (u3.minute >= 60) {
  206. u3.minute -= 60;
  207. u3.stepeni++;
  208. }
  209. while(u3.minute < 0) {
  210. u3.minute += 60;
  211. u3.stepeni--;
  212. }
  213. while (u3.stepeni > 360) u3.stepeni -= 360;
  214. while (u3.stepeni < 0) u3.stepeni += 360;*/
  215. Ugao u3 (a, b, z);
  216.  
  217. return u3;
  218. }
  219.  
  220. Ugao ProduktUglaSaBrojem(const Ugao &u, double x)
  221. {
  222. double r = u.DajRadijane() * x;
  223.  
  224. Ugao v = u;
  225.  
  226. v.Postavi(r);
  227. // u.DajStepene() *= x;
  228. return v;
  229. }
  230.  
  231. int main()
  232. {
  233. Ugao u(50, 25, 12), v(500, 300, 200), f(50, 30, 10);
  234. u.SaberiSa(1);
  235. u.IspisiKlasicno(); std::cout << std::endl;
  236. u.SaberiSa(1).SaberiSa(f).Ispisi();
  237.  
  238.  
  239. /* Ugao u1, u2(90,0,0), u3(180,0,0);
  240.  
  241. u1.Ispisi();
  242. std::cout << std::endl;
  243. u2.Ispisi();
  244. std::cout << std::endl;
  245. u3.Ispisi();
  246. std::cout << std::endl;*/
  247.  
  248. return 0;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement