infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Stanescu Jean Alexandru din Ianuarie 29, 2013, 10:04:19



Titlul: Operatori necunoscuti
Scris de: Stanescu Jean Alexandru din Ianuarie 29, 2013, 10:04:19
Am vazut si am inceput sa folosesc LL dupa un anumit numar pt a-l converti la tipul long long, dar acesta merge si cand numarul are 62 de cifre. Cu cat sunt mai multe cifre cu atat numarul creste in valoare (numar de 19 cife, maximul nr. de cifre pt tipul long long).

Ex: Pt #define PInfinit 20000000000000000000000000000000000000000000000000000000000000LL
cout<<PInfinit; este 4611686018427387904


Am mai vazut in alte carti PInfinit2 (Plus Infinit) declarat ca "1.e20". Cand afisezi acest numar rezultatul este "1e+020". Care este logica?


PInfinit < PInfinit2


Titlul: Răspuns: Operatori necunoscuti
Scris de: Radu-Andrei Szasz din Februarie 02, 2013, 14:28:01
Desi merge sa pui LL dupa un numar care depaseste valoare LL, acesta nu va putea fi stocat intr-o variabila de tip long long din motive evidente.
Nici daca declari un int si ii dai valoare 10000000000000 nu vei lua eroare de compilare, dar nici nu vei avea valoarea dorita in variabila.

Declararea ca 1e20 inseamna 10^20.
Daca vrei sa ti se afiseze in mod uzual si nu in format stiintific, este ok sa scrii cout<<fixed<<INF;

Pentru a folosi fixed trebuie sa incluzi header-ul iomanip.


Titlul: Răspuns: Operatori necunoscuti
Scris de: Simoiu Robert din Februarie 02, 2013, 16:31:25
Btw, daca chiar vrei 1e20 sa ti se afiseze. foloseste asa :
Cod:
# define PInfinit 20000000000000000000000000000000000000000000000000000000000000.0
# define PInfinit 2e10 // tot aia
Acum PInfinit va fi de tip real (double de preferat), si ti se afisa corespunzator. Daca vrei numar mai mare, si precizie mai mare (nu e cazul aici), pui dupa .0 un L, nu LL ca la long long, doar un L de la Long double.
Cod:
# define PInfinit 20000000000000000000000000000000000000000000000000000000000000.0L
# define PInfinit 2e10L // ca mai sus, doar cu L-ul aferent


Titlul: Răspuns: Operatori necunoscuti
Scris de: Radu-Andrei Szasz din Februarie 02, 2013, 16:42:03
@Simoiu Robert: Daca faci declararea cu e cum ai zis tu, in PInfinit vei avea valoarea 2 * 10^(-10) ceea ce tinde la 0, nu la infinit. Corect e fara acel -.


Titlul: Răspuns: Operatori necunoscuti
Scris de: Simoiu Robert din Februarie 02, 2013, 16:44:39
Scuze, eu ma gandeam la epsilon :)).