[ Pobierz całość w formacie PDF ]

Zwróćmy uwagę, że trzy ostatnie funkcje są określone jako odwrotności trzech
pierwszych. Wynika stąd fakt, iż potrzebujemy do szczęścia jedynie sinusa, cosinusa i
tangensa  resztę funkcji i tak będziemy mogli łatwo uzyskać.
C++ posiada oczywiście odpowiednie funkcje:
double sin(double alfa); // sinus
double cos(double alfa); // cosinus
double tan(double alfa); // tangens
Działają one identycznie do swoich geometrycznych odpowiedników. Jako jedyny
parametr przyjmują miarę kąta w radianach i zwracają wyniki, których bez wątpienia
można się spodziewać :)
Jeżeli chodzi o trzy brakujące funkcje, to ich definicje są, jak sądzę, oczywiste:
double cot(double alfa) { return 1 / tan(alfa); } // cotangens
double sec(double alfa) { return 1 / cos(alfa); } // secant
double csc(double alfa) { return 1 / sin(alfa); } // cosecant
Gdy pracujemy z kątami i funkcjami trygonometrycznymi, nierzadko pojawia się
konieczność zamiany miary kąta ze stopni na radiany lub odwrotnie. Niestety, nie
znajdziemy w C++ odpowiednich funkcji, które realizowałyby to zadanie. Być może
dlatego, że sami możemy je łatwo napisać:
const double PI = 3.1415923865;
double degtorad(double alfa) { return alfa * PI / 180; }
double radtodeg(double alfa) { return alfa * 180 / PI; }
Pamiętajmy też, aby nie mylić tych dwóch miar kątów i zdawać sobie sprawę, iż funkcje
trygonometryczne w C++ używają radianów. Pomyłki w tej kwestii są dość częste i
powodują nieprzyjemne rezultaty, dlatego należy się ich wystrzegać :)
Jak zwykle, więcej informacji o funkcjach sin(), cos() i tan() znajdziesz w MSDN.
Możesz tam również zapoznać się z funkcjami odwrotnymi do trygonometrycznych 
asin(), acos() oraz atan() i atan2().
Liczby pseudolosowe
Zostawmy już te zdecydowanie zbyt matematyczne dywagacje i zajmijmy się czymś, co
bardziej zainteresuje przeciętnego zjadacza komputerowego i programistycznego
chleba :) Mam tu na myśli generowanie wartości losowych.
Liczby losowe znajdują zastosowanie w bardzo wielu programach. W przypadku gier
mogą służyć na przykład do tworzenia realistycznych efektów ognia, deszczu czy śniegu.
Używając ich możemy również kreować za każdym inną mapę w grze strategicznej czy
zapewnić pojawianie się wrogów w przypadkowych miejscach w grach zręcznościowych.
Przydatność liczb losowych jest więc bardzo szeroka.
Uzyskanie losowej wartości jest w C++ całkiem proste. W tym celu korzystamy z funkcji
rand() (ang. random  losowy):
int rand();
Jak możnaby przypuszczać, zwraca nam ona przypadkową liczbę dodatnią43. Najczęściej
jednak potrzebujemy wartości z określonego przedziału  na przykład w programie
43
Liczba ta należy do przedziału , gdzie RAND_MAX jest stałą zdefiniowaną przez kompilator (w
Visual C++ .NET ma ona wartość 32767).
Podstawy programowania
122
ilustrującym działanie pętli while losowaliśmy liczbę z zakresu od 1 do 100. Osiągnęliśmy
to w dość prosty sposób:
int nWylosowana = rand() % 100 + 1;
Wykorzystanie operatora reszty z dzielenia sprawia, że nasza dowolna wartość (zwrócona
przez rand()) zostaje odpowiednio  przycięta  w tym przypadku do przedziału
(ponieważ resztą z dzielenia przez sto może być 0, 1, 2, & , 98, 99). Dodanie jedynki
zmienia ten zakres do pożądanego .
W podobny sposób możemy uzyskać losową liczbę z jakiegokolwiek przedziału. Nie od
rzeczy będzie nawet napisanie odpowiedniej funkcji:
int random(int nMin, int nMax)
{ return rand() % (nMax - nMin + 1) + nMin; }
Używając jej, potrafimy bez trudu stworzyć chociażby symulator rzutu kostką do gry:
void main()
{
std::cout
getch();
}
Zdaje się jednak, że coś jest nie całkiem w porządku& Uruchamiając parokrotnie
powyższy program, za każdym razem zobaczymy jedną i tą samą liczbę! Gdzie jest więc
ta obiecywana losowość?!
Cóż, nie ma w tym nic dziwnego. Komputer to tylko wielkie liczydło, które działa w
zaprogramowany i przewidywalny sposób. Dotyczy to także funkcji rand(), której
działanie opiera się na raz ustalonym i niezmiennym algorytmie. Jej wynik nie jest zatem [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • pantheraa90.xlx.pl