Problem zamiany radianów na stopnie i minuty

Odpowiedz Nowy wątek
2011-08-30 16:36
michal5
0

Mam problem z zamianą kąta otrzymanego w radianach na stopnie i minuty.Tzn. liczba stopni jest wyliczana prawidłowo lecz przy minutach jest już problem ponieważ liczba ta jest zapisywana w systemie dziesiątkowym. Z matematycznego punktu widzenia wystarczyło by zmienić mianownik na 60 i wszystko byłoby ok, ale tutaj nie można zbytnio takiej operacji zrobić.


 #include <iostream>
 #include <cstdlib>
 #include <cmath>
 #include <iomanip>
 #include <windows.h>
 #include <string>
 #include <stdlib.h>
using namespace std;

int main()
{
          double modul;
          double srzew;
          cout<<"Podaj srednice zewnetrzna slimaka: \n";
          cin>> srzew;
          cout<<"Podaj modul: \n";
          cin>> modul;
          double srpodz= (srzew-2*(modul));
          double krotnosc;
          cout<<"Podaj krotnosc slimaka: \n";
          cin>> krotnosc;
          double kat=(krotnosc*modul)/srpodz;
          double kat2 = (atan(kat)* 180) / M_PI;
          cout<<"Kat pochylenia slimacznicy wynosi: \n";
          cout<<kat2<<"\n";

          int wybor3;
          cout<<"Jesli nie chcesz konczyc program wcisnij: 1 \n W przeciwnym razie wcisnij dowolny klawisz i nacisnij ENTER...\n";
          cin>>wybor3;
          switch (wybor3)
          {
          case 1: main();break;
          default: exit (0); ;
          }

}

Pozostało 580 znaków

2011-08-30 16:45
0

Część ułamkową tej liczby, która reprezentuje stopnie musisz pomnożyć przez 60 i będą to minuty. Część ułamkowa minut pomnożona przez 60 to sekundy.

Poczytaj tutaj: http://www.cplusplus.com/reference/clibrary/cmath/modf/

cout<<"Kat pochylenia slimacznicy wynosi: \n";

Czy tylko mnie to śmieszy? ;-)


"(...) otherwise, the behavior is undefined".
edytowany 1x, ostatnio: Endrju, 2011-08-30 16:50
chodzi o tą spacje przed enterem? :P - krwq 2011-08-31 10:13
Slimacznica jest smieszna. :-( - Endrju 2011-08-31 14:44

Pozostało 580 znaków

2011-08-30 18:58
michal5
0

Zrobiłem tak jak powiedziałeś jednak znowu wychodza jakieś głupoty


          double modul;
          double srzew;
          cout<<"Podaj srednice zewnetrzna slimaka: \n";
          cin>> srzew;
          cout<<"Podaj modul: \n";
          cin>> modul;
          double srpodz= (srzew-2*(modul));
          double krotnosc;
          cout<<"Podaj krotnosc slimaka: \n";
          cin>> krotnosc;
          double kat=(krotnosc*modul)/srpodz;
          double kat2 = (atan(kat)* 180) / M_PI;
          double ulamek;
          double stopnie= modf( kat2, &ulamek); 

          cout<<"Kat pochylenia slimacznicy wynosi: \n";
          double minuty= cz*60;
          cout<<stopnie<<"stopni"<<minuty<<"minut";

Pozostało 580 znaków

2011-08-30 19:49
0

Kod, który wyjaśnia o co mi chodzi, zrozum jak działa a potem zastosuj u siebie:

  double rad = 1.3567;
 
  double deg = rad * (180/M_PI);
 
  double degrees = 0.0;
  double minutes = modf(deg, &degrees);
 
  cout << rad << " radianow to " << degrees << "*" << ceil(minutes * 60) << "'" << endl;

Tutaj możesz zobaczyć jak działa: http://ideone.com/5BMlx


"(...) otherwise, the behavior is undefined".

Pozostało 580 znaków

2011-08-30 20:40
michal5
0

Dzięki wielkie, teraz wszystko działa jak należy ;)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0