👤

Stabiliţi care dintre următoarele expresii C/C++ are valoarea 1 dacă şi numai dacă numărul întreg memorat în variabila x nu aparţine intervalului (-35,-20)∪[17,100].


Varianta 1
(x<=-35) || ((x<=16)|| (x>=-20)) || (x>100)

Varianta 2
(x<=-35) || ((x<=17) && (x>=-20)) || (x>=100)

Varianta 3
(x<-35) || ((x<16) && (x>-20)) || (x>100)

Varianta 4
(x<=-35) || ((x<=16) && (x>=-20)) || (x>100)

Vreau sa va intreb. cand neg un interval care are REUNIUNE, acesta negat inseamna INTERSECTIE si atunci de ce primu numar vine cu primu numar din al 2-lea interval???


Răspuns :

Răspuns:

Varianta 4.

Explicație:

Daca avem de verificat daca x nu apartine unei reuniuni de intervale, avem de verificat daca apartine vreunui interval, si negam:

Avem:

(x > -35 && x < -20) || (x >= 17 && x <= 100).

Daca negam:

!(x > -35 && x < -20) && !(x >= 17 && x <= 100)

( !(x>-35) || !(x < -20) ) && ( !(x >= 17) || !(x <= 100) )

( x <= -35 || x >= -20) && ( x < 17 || x > 100)

( x <= -35 || x >= -20) && (x <= 16 || x > 100)

(x <= -35 || x>= -20) -> [tex]x \in (-\infty, -35]\cup [-20, +\infty)[/tex]

x <= 16 || x > 100 -> [tex] x \in (-\infty, 16] \cup (100, +\infty)[/tex]

Cand aplicam && pe aceste conditii, avem:

[tex] x \in ((-\infty, -35]\cup [-20, +\infty) ) \cap ((-\infty, 16] \cup (100, +\infty)) \\ \\ x\in (-\infty, -35] \cup [-20, 16] \cup (100, +\infty)[/tex]

x <= -35  -> [tex]x\in (-\infty, -35][/tex]

x <= 16 && x>=-20 -> [tex]x \in [-20, 16][/tex]

x > 100 -> [tex]x\in (100,+\infty)[/tex]

Daca aplicam operatorul || pe aceste conditii:

[tex]x\in (-\infty, -35] \cup [-20, 16] \cup (100, +\infty)[/tex]

Deci

( x <= -35 || x >= -20) && (x <= 16 || x > 100)

e echivalent cu:

(x<=-35) || ((x<=16) && (x>=-20)) || (x>100)