Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <iomanip>
- //using namespace std;
- class Ugao
- {
- int stepeni, minute, sekunde;
- /* void Normaliziraj(){
- auto radijani = (stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1)));
- while(radijani >= 2 * 4 * atan(1)) radijani -= 2 * 4 * atan(1);
- while(radijani < 0) radijani += 2 * 4 * atan(1);*/
- // Postavi(radijani);
- public:
- Ugao (double radijani = 0)
- {
- Postavi(radijani);
- }
- Ugao (int stepeni = 0, int minute = 0, int sekunde = 0)
- {
- Postavi(stepeni, minute, sekunde);
- }
- void Postavi(double radij)
- {
- if (radij >= 2 * 4 * atan(1)) {
- while (radij >= 2 * 4 * atan(1)){
- radij -= 2 * 4 * atan(1); }
- }
- else if (radij < 0) {
- while (radij < 0) { radij += 2 * 4 * atan(1);
- }
- }
- this -> stepeni = radij * (180 / (4 * atan(1)));
- double st = radij * (180 / (4*atan(1)));
- this -> minute = (st - stepeni) * 60;
- double m = (st - stepeni) * 60;
- this -> sekunde = (m - minute) * 60;
- }
- /* int step = (radijani * 180) / (4 * atan(1));
- while (stepeni < 0) stepeni += 360;
- while (stepeni >= 360) stepeni -= 360;
- // minute = int((radijani - stepeni)*3600)/60;
- double min = ((radijani*(180 / (4*atan(1))) - int(radijani * 180 / 4 * atan(1)))* 60 +1e-6);
- int int_minute = int(min);
- //minute = ((radijani*(180 / (4*atan(1))) - DajStepene())*60 +1e-6);
- while (minute < 0) minute += 360;
- while (minute >= 360) minute -= 360;
- //sekunde = (((radijani*(180 / (4*atan(1)))- DajStepene() - DajMinute())/60.) * 3600 + 1e-6);
- int sec = (min - int_minute) * 60 + 1e-6;
- // sekunde = int ((radijani - stepeni)*3600)%60;
- while (sekunde < 0) sekunde += 360;
- while (sekunde >= 360) sekunde -= 360;
- // Normaliziraj();
- Postavi(step, int_minute, sec);
- }*/
- void Postavi(int stepeni, int minute, int sekunde)
- {
- while (sekunde < 0) {
- sekunde += 60;
- minute--;
- }
- while(minute < 0) {
- minute += 60;
- stepeni--;
- }
- while (stepeni < 0) stepeni += 360;
- while (sekunde >= 60) {
- sekunde -= 60;
- minute++;
- }
- while (minute >= 60) {
- minute -= 60;
- stepeni++;
- }
- while (stepeni >= 360) stepeni -= 360;
- this -> stepeni = stepeni;
- this -> minute = minute;
- this -> sekunde = sekunde;
- }
- /* Ugao::stepeni = stepeni;
- Ugao::minute = minute;
- Ugao::sekunde = sekunde;
- //auto radijani = ((stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1))));
- Normaliziraj();*/
- // return Ugao(stepeni, minute, sekunde);
- double DajRadijane() const
- {
- double pretvoreno = (stepeni + (minute + sekunde/60.) / 60.);
- double radijani = ((4 * atan(1)) / 180) * pretvoreno;
- if (radijani >= 2 * 4 * atan(1)) {
- // while(radijani < 0) radijani += 2 * 4 * atan(1);
- while(radijani >= 2 * 4 * atan(1)) {
- radijani -= 2 * 4 * atan(1);
- }
- }
- return radijani;
- }
- void OcitajKlasicneJedinice(int &stepeni, int &minute, int &sekunde)
- {
- stepeni = this -> stepeni;//DajStepene();
- minute = this -> minute;;
- sekunde = this -> sekunde;
- }
- int DajStepene() const
- {
- // double stepeni(radijani*(180 / (4*atan(1))));
- return stepeni;
- }
- int DajMinute() const
- {
- // double minute(radijani*(180 / (4*atan(1))));
- return minute;//int((minute-DajStepene())*60 +1e-6);
- }
- int DajSekunde() const
- {
- // double sekunde(radijani*(180 / (4*atan(1))));
- return sekunde;//int((sekunde - DajStepene() - DajMinute()/60.) * 3600 + 1e-6);
- }
- void Ispisi() const
- {
- std::cout << std::fixed << std::setprecision(5) << DajRadijane() << std::endl;
- // std::cout /*<< std::fixed()*/ << std::setprecision(5) << stepeni << " " << minute << " " << sekunde;
- }
- void IspisiKlasicno() const
- {
- std::cout << std::fixed << std::setprecision(5) << DajStepene() << "deg ";
- std::cout << std::fixed << std::setprecision(5) << DajMinute() << "min ";
- std::cout << std::fixed << std::setprecision(5)<< DajSekunde() << "sec";
- }
- Ugao &SaberiSa(const Ugao &u)
- {
- /* auto radijani = ((stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1))));
- radijani += u.DajRadijane();
- Normaliziraj();*/
- int a = stepeni + u.DajStepene();
- int b = minute + u.DajMinute();
- int c = sekunde + u.DajSekunde();
- Postavi(stepeni, minute, sekunde);
- this ->Postavi(a, b, c);
- return *this;
- }
- Ugao &PomnoziSa(double x)
- {
- /* auto radijani = ((stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1))));
- radijani *= x;
- Normaliziraj();*/
- // Postavi(x * DajStepene(), x * DajMinute(), x * DajSekunde());
- double rad = this -> DajRadijane();
- double a = rad * x;
- this -> Postavi(a);
- return *this;
- }
- friend Ugao ZbirUglova(const Ugao &u1, const Ugao &u2);
- friend Ugao ProduktUglaSaBrojem( Ugao u, double x);
- };
- /*void Ugao::Postavi(int stepeni, int minute, int sekunde)
- {
- radijani = (stepeni + minute/60. + sekunde/3600.) / (180. / (4*atan(1)));
- Normaliziraj();
- }
- */
- Ugao ZbirUglova(const Ugao &u1, const Ugao &u2)
- {
- // Ugao u3(u1.DajRadijane() + u2.DajRadijane());
- //return u3;
- //return Ugao(u1.DajRadijane() + u2.DajRadijane());
- int a = u1.DajSekunde() + u2.DajSekunde();
- int b = u1.DajMinute() + u2.DajMinute();
- int z= u1.DajStepene() + u2.DajStepene();
- /* while (u3.sekunde < 0) {
- u3.sekunde += 60;
- u3.minute--;
- }
- while (u3.sekunde >= 60) {
- u3.sekunde -= 60;
- u3.minute++;
- }
- while (u3.minute >= 60) {
- u3.minute -= 60;
- u3.stepeni++;
- }
- while(u3.minute < 0) {
- u3.minute += 60;
- u3.stepeni--;
- }
- while (u3.stepeni > 360) u3.stepeni -= 360;
- while (u3.stepeni < 0) u3.stepeni += 360;*/
- Ugao u3 (a, b, z);
- return u3;
- }
- Ugao ProduktUglaSaBrojem(const Ugao &u, double x)
- {
- double r = u.DajRadijane() * x;
- Ugao v = u;
- v.Postavi(r);
- // u.DajStepene() *= x;
- return v;
- }
- int main()
- {
- Ugao u(50, 25, 12), v(500, 300, 200), f(50, 30, 10);
- u.SaberiSa(1);
- u.IspisiKlasicno(); std::cout << std::endl;
- u.SaberiSa(1).SaberiSa(f).Ispisi();
- /* Ugao u1, u2(90,0,0), u3(180,0,0);
- u1.Ispisi();
- std::cout << std::endl;
- u2.Ispisi();
- std::cout << std::endl;
- u3.Ispisi();
- std::cout << std::endl;*/
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement