Variabilele întregi x şi y memorează două numere naturale cu cel mult 4 cifre fiecare. Care
dintre expresiile de mai jos are valoarea 1, dacă şi numai dacă valoarea memorată de x
aparţine intervalului [10,100] şi valoarea memorată de y aparţine intervalului [5,30]?
(4p.)
a. (x<=100 && x>10) && (y>=5 || y<30) b. (x<=100 && x>=10) && (y<5 && y<=30)
c. (x<=100 && x>=10)|| (y>=5 && y<=30) d. !((x>100 || x<10) || (y<5 || y>30)) d
Răspunsuri la întrebare
raspuns corect !((x>100 || x<10) || (y<5 || y>30))
"!" neaga tot ce este intre paranteze
> negat este <=
< negat este >=
|| negat este &&
Raspuns corect : D
Explicatie :
Varianta a nu poate sa fie deoarece (x<=100 && x>10) este echivalent cu x apartine (10,100] iar noi avem nevoie de interval inchis in ambele capete. In plus, expresia (y>=5 || y<30) este echivalenta cu y apartine [5,30). Din nou, e necesar sa avem interval inchis in ambele capete.
Varianta b nu poate sa fie deoarece (y<5 && y<=30) este echivalent cu y apartine (-inf, 5) intersectat cu (-inf, 30], deci y apartine (-inf,5) care este clar diferit de intervalul cautat de noi.
Varianta c nu poate sa fie. Chiar daca cele doua expresii sunt corecte cerinta specifica faptul ca ca ambele conditii trebuie sa fie indeplinite in acelasi timp (x sa aiba proprietatea data si y sa aiba proprietatea data). Ca optiunea sa fie corecta era necesar ca intre cele doua paranteze sa existe && in loc de ||
Varianta d este singura varianta corecta. Aplicand legile De Morgan :
!((x>100 || x<10) || (y<5 || y>30)) = !(x>100 || x<10) && !(y<5 || y>30) = (x<=100 && x >= 10) && (y>=5 && y<= 30) , expresie care corespunde perfect cerintei noastre.