Informatică, întrebare adresată de paulb007, 9 ani în urmă

Indicați expresia C/C++ care are valoarea 1 dacă şi numai dacă numărul natural memorat în variabila întreagă n este divizibil cu 2, dar NU şi cu 5.


Varianta 1
(n%10==0) && (n%2==0)

Varianta 2
(n%2==0) && (n%5==0)

Varianta 3
(n%10==0) || (n%5!=0)

Varianta 4
!((n%2==1) || (n%5==0))

raspuns corect v4 dar spuneti de ce n%2!=1 este divizibil cu 2?????


BigBenN: O explicatie de ce n%2!=1 este divizibil cu 2 .
BigBenN: Daca n%2==0 este divizibil cu 2 . Daca n%2!=0 nu este divizibil cu 2
BigBenN: Daca n%2==1 nu este divizibil cu 2. Daca n%2!=1 este divizibil cu 2.
BigBenN: Daca obvservi pe diagonala sunt sinonimele. Cand imparti un numar la 2 ai doua posibilitati de resturi : 1 respectiv 2.
BigBenN: 0 respectiv 1 , scuza-ma.
BigBenN: !((n%2==1) || (n%5==0)) se mai scrie asa : (n%2!=1) && (n%5!=0)
BigBenN: Se neaga si operatorul.
BigBenN: Daca n%2!=1 este normal sa fie par , un fel de traducere [daca impartim pe n la 2 si restul ne da diferit de 1 este numar par]

Răspunsuri la întrebare

Răspuns de CinevaFaraNume
5

Răspuns:

Varianta 4

Explicație:

Varianta 1: (n%10==0) && (n%2==0) = (n%5==0&&n%2==0) && (n%2==0). E gresit deoarece spune sa nu fie divizibil cu 5

Varianta 2: (n%2==0) && (n%5==0) = (n%10==0) deci aceasi problema ca la varianta 1

Varianta 3: (n%10==0)||(n%5!=0) = (n%2==0&&n%5==0)||(n%5!=0). Prima paranteza e echivalenta cu cea de la varianta 2, deci aceasi problema(avem || deci rezultatul expresiei (n%5!=0) este ignorat daca rezultatul primei paranteze este adevarat).

Varianta 4: !((n%2==1)||(n%5==0)) = !(n%2==1) && !(n%5==0) = (n%2==0) && (n%5!=0). Aceasta este varianta corecta

"spuneti de ce n%2!=1 este divizibil cu 2?????"

n%2 poate avea doar 2 valori, 0 si 1.

n%2 == 0 este echivalent cu !(!(n%2==0)), cu !(n%2!=0), cu !(n%2==1) si cu (n%2!=1)

Alte întrebări interesante