Exercitii rezolvate - operatori

A. Utilizând operatorii C++, rescrieți expresiile:
4. Restul împărțirii lui a la 100, adică a MOD 10. Rezolvare: a % 100 5. a DIV 10 *10+b MOD 10; Rezolvare: a / 10 *10+b %10. 6. a∈(-∞, -2) U (-1,1) U (50, ∞); Rezolvare: (a< -2) || ((a>-1) && (a<1)) (|| a>50). 7. a∉ [2,3); Rezolvare: (a<2) || (a>=3). 8. (a DIV b MOD c ≤ b) OR NOT(b=a); Rezolvare: (a / b % c <=b) || !(b=a) . 9. NOT((a≤b AND a≥c) OR (a≤d)); Rezolvare: !((a<=b && a>=c) || (a<=d)). 10. a/b≤c/d≤e/f Rezolvare:( a/b<=c/d) && (c/d<=e/f).

B. Care este rezultatul evaluării expresiilor:
11. 10*2/3*3/2; Rezolvare: 9. 12. 9/2*2-5; Rezolvare: 3. 12. a=a+2.5, dacă a este o variabilă de tip int, având valoarea 6; Rezolvare: adunarea unei valori reale la o variabilă de tip int se face printr-o conversie implicită. În acest caz, rezultatul va fi 8, obținut prin adunarea la valoarea 6 a conversiei la întreg a valorii 2.5. 13. a%=b--, dacă a=29,iar b=7; Rezolvare: expresia este echivalentă cu secvența a=a%b; b=b-1;prin urmare după execuție, variabila a va reține valoarea 1, iar b valoarea 6. 14. a!=2*b, dacă variabilele a și b sunt de tip intreg, a memorând valoarea 4, iar b valoarea 2; Rezolvare: 0. 15. b=++a?5:7, dacă a=-1; Rezolvare: expresia este echivalentă cu secvența a=a%b; b=b-1;prin urmare după execuție, variabila a va reține valoarea 1, iar b valoarea 6. 16. b=(a<<3)+(a>>1), dacă avem declararea int a=2, b; Rezolvare: operatorii de deplasare la nivel de bit determină, practic, deplasarea cu un anumit număr de biți a cifrelor 1din reprezentarea binară. Astfel, cifra 1 din reprezentarea lui 2, 0...010 se va deplasa la stânga, cu trei biți, determinând valoarea 16, respectiv la dreapta cu un bit, determinând valoarea 1. Rezultatul va fi, evident, 17. 17. b=a<<(a>>a), dacă a=4; Rezolvare: 4. 18. a+=b+1, dacă am avea declararea int a=2, b=2; Rezolvare: În urma execuției, variabila a va reține valoarea 5. Variabila b nu își va schimba valoarea. 19. a=b==3+1/3, dacă am avea declararea int a=0, b=3; Rezolvare: evaluarea expresiilor se face de la dreapta la stânga, astfel încât, în prima fază este evaluată expresia b==3+1/3. Rezultatul acestei evaluări este 1, care este atribuit, apoi, variabilei a.

Precizează valoarea de adevăr a următoarelor propoziții !
20. Ştiind că variabilele a şi b sunt de tip întreg, prin instrucțiunea a=b DIV 10 MOD 10 se atribuie variabilei a cifra zecilor numărului natural cu cel puţin două cifre memorat de variabila b; Rezolvare:adevărat. 21. Valoarea expresiei (a / b % c <= b)  | | ! (b == a), dacă variabilele întregi a, b, c au valorile a=20, b=3,c=5, este FALSE; Rezolvare:fals. 22. Expresia a=(a/10*10+7)*10+a%10 determină inserarea cifrei 7 în faţa ultimei cifre a unui număr natural, cu mai mult de 2 cifre, memorat în variabila a. Rezolvare:adevărat. 23. Expresia a%2+(a+1)%2 are valoarea 1, pentru orice valoare a varibilei întregi a. Rezolvare: adevărat. 24. a/2/2==1 dacă și numai dacă a==4. Rezolvare:fals.

C. Alege răspunsul correct !
25. Știind că n este o variabila întreaga ce memorează un număr natural stabiliți care din expresiile următoare este egală cu zero dacă și numai dacă n este un număr nedivizibil cu 3. Rezolvare: c.
 * 1) (2-n % 3)% 2;
 * 2) (1-n % 3)% 2;
 * 3) (1-n % 3 ) * (2-n % 3);
 * 4) (1- n % 3) + (2-n % 3);

26. Care este cea mai mică valoare pe care o poate avea expresia n / 7 - n % 7, dacă variabila n memorează un număr natural cu o singură cifră ? Rezolvare: c.
 * 1) 0;
 * 2) 1,14;
 * 3)  -6;
 * 4) 1; 

27. Variabila n este de tip real. Care dintre următoarele expresii are valoarea TRUE dacă şi numai dacă numărul real memorat în variabila x aparţine intervalului (5,8] ? Rezolvare: d.
 * 1) (x<8)  && (x>=5); 
 * 2) (x<=8) || (x>5); 
 * 3) (x>8) || (x<=5);
 * 4) (x<=8) && (x>5);

28. Care dintre următoarele expresii C/C++ are valoarea 1 dacă şi numai dacă numărul real memorat în variabila x se află în intervalul (-2,2)? Rezolvare: b.
 * 1) x*x-4<=0 
 * 2) 4-x*x>0
 * 3) (20

29. Variabilele x şi y sunt de tip întreg, x memorând valoarea 4, iar y valoarea 2. Care dintre expresiile C++ de mai jos are valoarea 0? Rezolvare: d.
 * 1) x-y!=0
 * 2) x+y>x%y+1
 * 3)  x-2*y==0
 * 4) !(x==2*y)