1. Care dintre următoarele expresii C/C++, are ca valoare cel mai mic dintre numerele
naturale nenule, cu cel mult 4 cifre fiecare, memorate în variabilele întregi x şi y?
a. (x+y-abs(x-y))/2
b. x+y-abs(x-y)/2
c. (x+y+abs(x-y))/2
d. (x+y+abs(x+y))/2
2. Care dintre următoarele expresii C/C++, are ca valoare cel mai mare dintre numerele
naturale nenule memorate în variabilele întregi a şi b?
a. (a+b+abs(a-b))/2
b. a+b+abs(a-b)/2
c. (a+b-abs(a-b))/2
d. (a+b-abs(a+b))/2
Imi puteti explica cum se rezolva expresiile astea, asa ca la prosti:))
Răspunsuri la întrebare
Răspuns:
1.a
2.a
Explicație:
abs(x) = valoarea absoluta a lui x = modulul lui x.
Sa consideram ca x are valoarea are valoarea mai mica:
Pentru prima expresie:
(x+y-abs(x-y))/2 = (x+y-(y-x))/2 (y > x deci modulul schimba semnele) = (x+y-y+x)/2 = 2x/2 = x
Pentru a 2-a expresie:
x+y-abs(x-y)/2 = x+y-(y-x)/2 = x+y-y/2+x/2 care nu este x.
Pentru a 3-a expresie:
(x+y+abs(x-y))/2 = (x+y+(y-x))/2 = (x+y+y-x)/2 = 2y/2 = y (am obtinut valoarea mai mare, ceea ce nu e bine)
Petru a 4-a expresie:
(x+y+abs(x+y))/2 = (x+y+x+y)/2 = (2x+2y)/2 = x+y(am obtinut suma, tot nu e bine).
Singura care a dat corect pentru x = minim este a). Sa vedem ce se intampla daca y este mai mic decat x:
(x+y-abs(x-y))/2 = (x+y-(x-y))/2 = (x+y-x+y)/2 = 2y/2 = y. Corect
Doar prima expresie da valoarea corecta, deci este raspunsul corect.
Raspuns: a)
2.
Sa inlocuim in expresia a 3-a de la primul exercitiu x cu a si y cu b, pentru ca stim ca daca x < y expresia are valoarea lui y.
(x+y+abs(x-y))/2 = (a+b+abs(a-b))/2.
Sa vedem ce se intampla daca a < b:
(a+b+abs(a-b))/2 = (a+b+(b-a))/2 = (a+b+b-a)/2 = 2b/2 = b(valoarea mai mare)
Acum pentru a > b.
(a+b+abs(a-b))/2 = (a+b+a-b)/2 = 2a/2 = a
Am gasit expresia corecta( a) )
Daca este necesar, le incercam si pe celelalte:
A 2-a:
a+b+abs(a-b)/2, a>b = a+b+(a-b)/2 = a+a/2 + b - b/2 = 3a/2 +b/2, nu e nici a nici b(chiar daca exista cateva cazuri in care este corecta; in general, nu este).
A 3-a:
(a+b-abs(a-b))/2 Stim ca este expresia pentru minim, dar:
(a+b-abs(a-b))/2, a < b = (a+b-(b-a))/2 = (a+b-b+a)/2 = (2a)/2 = a(nu este buna, ne da minimul).
A 4-a:
(a+b-abs(a+b))/2, a<b = (a+b-(a+b))/2 = 0/2 = 0.... Clar nu e corecta
Raspuns: a)