Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 11.8.2012, 14:00   #1
NEWSWEETTOFFEE
Član
 
Član od: 3.5.2012.
Poruke: 45
Zahvalnice: 16
Zahvaljeno 2 puta na 2 poruka
Određen forumom Problem sa funkcijama u C-u

Zdavo, forumaši

Vi ste mi trenutno najbliži izvor pomoći, pa ću Vam postaviti još jedno pitanje.

Skoro sam počeo da učim C jezik i koristim Code::Blocks editor. Primetio sam da mi trigonometrijske funkcije šalju pogrešne rezultate (npr.: sin(90)=0.89).
Interesuje me zašto je to tako i koliko bi moglo da smeta pri komplikovanijem programiranju?

Unapred hvala!
NEWSWEETTOFFEE je offline   Odgovor sa citatom ove poruke
Stara 11.8.2012, 14:15   #2
chaami
Član
 
Član od: 15.12.2010.
Lokacija: Beograd
Poruke: 120
Zahvalnice: 26
Zahvaljeno 39 puta na 32 poruka
Određen forumom Re: Problem sa funkcijama u C-u

Sinus od 90 i jeste 0.89 ali to ti je u radianima.
Sinus od Pi/2 je 1.
chaami je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku chaami na korisnoj poruci:
NEWSWEETTOFFEE (11.8.2012)
Stara 11.8.2012, 14:39   #3
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom Re: Problem sa funkcijama u C-u

Citat:
chaami kaže: Pregled poruke
Sinus od 90 i jeste 0.89 ali to ti je u radianima.
Sinus od Pi/2 je 1.
Samo ću da dodam na odgovor da ne bude zabune oko prve rečenice šta je tačno u radijanima.

Broj pod sinusom (tj. bilo kojom trigonometrijskom funkcijom koja zahteva ugao kao argument) u C-u je u radijanima a rezultat trignometrijske funkcije je neimenovani broj (nema jedinicu).

sin(90) se dakle prevodi kao "sinus od 90 radijana" a pošto je veza između radijana i stepeni (stepeni) = (radijana) * 180 / Pi dobija se da sin(90) preveden u stepene u stvari znači "sinus od 5156.62 stepeni"
Neutrino je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Neutrino na korisnoj poruci:
NEWSWEETTOFFEE (11.8.2012)
Stara 11.8.2012, 18:04   #4
NEWSWEETTOFFEE
Član
 
Član od: 3.5.2012.
Poruke: 45
Zahvalnice: 16
Zahvaljeno 2 puta na 2 poruka
Određen forumom Re: Problem sa funkcijama u C-u

Hvala, ljudi. Možda sam trebao toga i sam da se setim.
A može li se promeniti pa da trigonometrijske funkcije u C jeziku uzimaju kao argumente brojeve koji označavaju broj stepeni?
NEWSWEETTOFFEE je offline   Odgovor sa citatom ove poruke
Stara 11.8.2012, 18:27   #5
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 279 puta na 196 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: Problem sa funkcijama u C-u

Kod:
double mymath(double (*funcptr)(double), double arg) {
  return funcptr(arg / 180 * 3.1415926535897932384626433832795);
}

// ...
printf("%lf", mymath(sin, 90));
EclipsE je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku EclipsE na korisnoj poruci:
Patrick (2.9.2012)
Stara 11.8.2012, 18:49   #6
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom Re: Problem sa funkcijama u C-u

math.h ima već svoju implementaciju Pi konstante kojoj može da se pristupi sa M_PI pa nema potrebe da se koristi eksplicitno navođenje njene vrednosti (3.1415...)
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 11.8.2012, 19:00   #7
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.085
Zahvaljeno 4.923 puta na 2.859 poruka
Određen forumom Re: Problem sa funkcijama u C-u

A možeš i seljačkim makro define-om

#define MYSIN(x) sin(x / 180 * M_PI)

Velika slova su tu čisto jer je konvencija da se makroi pišu velikim slovima (da bi se na prvi pogled znalo da je makro a ne "prava" funkcija sa pravim argumentima i pravim telom funkcije).
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 11.8.2012, 19:39   #8
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 279 puta na 196 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: Problem sa funkcijama u C-u

Citat:
Neutrino kaže: Pregled poruke
math.h ima već svoju implementaciju Pi konstante kojoj može da se pristupi sa M_PI pa nema potrebe da se koristi eksplicitno navođenje njene vrednosti (3.1415...)
Hmm, ja izguglao ali nisam našao ništa... c noob and google noob
EclipsE je offline   Odgovor sa citatom ove poruke
Stara 11.8.2012, 22:01   #9
M.Silenus
Veteran
 
Član od: 27.12.2005.
Lokacija: Vremenske Grobnice, Hiperion
Poruke: 680
Zahvalnice: 99
Zahvaljeno 124 puta na 82 poruka
Određen forumom Re: Problem sa funkcijama u C-u

Samo jedna mala napomena: M_PI nije deo ANSI C standarda. Ako želiš da koristiš ANSI C bez GNU ekstenzija (-ansi gcc opcija), nećeš imati M_PI.

U to, slučaju, jednostavno definišeš svoj M_PI (ili kako god već hoćeš da ga zoveš).
M.Silenus je offline   Odgovor sa citatom ove poruke
Stara 16.8.2012, 1:17   #10
Geomaster
V.I.P. Programiranje
 
Član od: 28.6.2007.
Lokacija: Beograd
Poruke: 2.342
Zahvalnice: 2.836
Zahvaljeno 1.047 puta na 507 poruka
Slanje poruke preko MSN-a korisniku Geomaster Slanje poruke preko Skypea korisniku Geomaster
Određen forumom Re: Problem sa funkcijama u C-u

Da se nadovežem, ako ti treba najveća preciznost, ne moraš da hardkoduješ, možeš samo da definišeš recimo
Kod:
const double PI = 2.0 * asin(1.0);
Geomaster je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Problem sa puštanjem HD filmova sa eksternog HDD-a Pipboy Foto i audio/video 0 24.12.2010 21:09
Nokia e71 i problem sa USB konekcijom PsyDuck Aparati i oprema 5 1.12.2010 15:17
Problem sa PLAVIM EKRANOM backo87 Kvarovi 7 25.10.2010 18:12
WBR-3408 11g Wireless Broaband Router- Problem sa umrežavanjem Hich Komunikacioni uređaji i umrežavanje 1 19.2.2010 9:42
HP DeskJet f4180 - problem sa instalacijom vanila Ostale komponente 3 12.3.2009 19:22


Sva vremena su po Griniču +2 h. Sada je 0:14.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com