660358000

660358000



return 1; else

return n*silnia(n-1);

>

int mainO {

int n;

std::cout << "Podaj liczbę: std : :cin >> n;

std::cout << n << "! = " << silnia(n) << "\n" ;

}

Efekt kilku wywołań tego programu jest następujący:

Podaj liczbę: 12 121=479001600 Podaj liczbę: 16 16!=2004189184 Podaj liczbę: 17 17!=-288522240

Chociaż zgodnie z definicją matematyczną silnia liczby naturalnej jest większa od zera, w powyższym przykładzie pojawił się wynik ujemny. To właśnie efekt pierścieniowej struktury typu int i wyjścia poza dozwolony zakres przy obliczaniu 17!.

2.1.4 Implementacje

C++

W C—|—|— mamy do dyspozycji kilka typów całkowitych, zarówno ze znakiem, jak i bez (patrz tabela 2.3). Różnią się one między sobą ilością bitów używanych do zapisania liczb, a co za tym idzie, zakresem liczb możliwych do przedstawienia na komputerze oraz szybkością obliczeń wykonywanych na nich. Warto wiedzieć, że na różnych platformach te same typy mogą się różnić między sobą długością. Dlatego minimalne i maksymalne wartości możliwe do przedstawienia w każdym typie danych na konkretnej platformie zapisane są w pliku nagłówkowym climits.

Gdybyśmy potrzebowali liczb całkowitych większych od maksymalnej wartości reprezentowanej w typie long int, możemy skorzystać z jednej z wielu bibliotek, np. C+-f- BIL [29] lub GMP [30], pozwalających na operowanie na liczbach, których wielkość ograniczona jest jedynie pamięcią komputera.

Fortran

W tabeli 2.4 zestawione zostały dostępne w Fortranie typy całkowite. Odpowiadają one typom ze znakiem w C++ z tą różnicą, że Fortran oferuje typ o długości 64 bitów również na platformach 32-bitowych.

Python

W Pythonie mamy do dyspozycji dwa typy całkowite. Typ int odpowiada 32-bitowemu typowi int z C-H- i pozwala na przedstawienie liczb z zakresu

15



Wyszukiwarka

Podobne podstrony:
DSCN2553 mainO intlp; float stopień; clrscrf); cout«"Podaj liczbę punktów (0 <= Ip <= 100
208 TIF int Add(){ return ++m_cRef;} int Release(){ int cRef; // Wskazówka 86. — mcRef; cRef =
if(chToken == chSrc) return m_fContain;}} return !m_fContain;} int IMatch(const char
ALG1 2.B. Typy programów rekurencyjnych 41 if (x==0) return 1; else return x*silnial !x-l); t Nie j
#include <iostream.h> using namespace std; int raain(){ char s[100] ; cout « "Podaj
class Okręg : public Figura{ private: void Rysuj(int x1, int y1, int x2, int y2){ cout «
56224 pp1 (3) ĆWICZENI* I.    Deklaracje: int i; float f; int *p; int tab
DSC00749 w !*******************! void funkcja_w$kl(int *wsk, int rozmiar) { cout« "

Uzyc stosu do odwrocienia kolejnosci liter tekstu2 int main (){ int i=0; char txtl[N] > txt2[N];
class Okręg : public Figura{ private: void Rysuj(int x1, int y1, int x2, int y2){ cout «
Zdjęcie0037 (4) int a, b; clrscr(); cout « "a =    cin » a; cout « "b = &nb
133 OPERACJE NA ŁAŃCUCHACH int main(void) { char str[100]; int cmp; fputs("Podaj ciąg
DSCN2557 mainf)■H I int ii.b; cout « "PocŁij ;i: w; dn»a; b=0; while (a<10) /

więcej podobnych podstron