Si explicatia!
Va multumesc !
Răspunsuri la întrebare
Răspuns:
Răspunsul corect este b).
Explicație:
Sfat pe viitor, încearcă să iei un număr și să-l încerci pe toate cazurile, te va ajuta să afli răspunsul corect și să înțelegi algoritmul.
Hai să luăm fiecare instrucțiune de la cazul b).
s <- s + (n % 10) * (n % 2)
s: variabila care stochează suma cifrelor impare
n % 10: te ajută să afli ultima cifră a unui număr (n % 10 reprezintă restul împărțirii lui n la 10)
n % 2: te ajută să determini dacă n este par sau nu (exemplu 12%2 este egal cu 0, dar 13%2 este egal cu 1)
n = n / 10: taie ultima cifră a numărului (dacă era n = n / 100, tăia ultimele două cifre ale numărului și tot așa)
Ca să înțelegi acest algoritm, încearcă să iei n%2 ca pe un test unde primesti 1 daca n este impar și 0 n daca este par.
Luăm și un exemplu, n = 132. Suma cifrelor impare ale lui 132 este 1+3.
Știm că s este egal cu 0 de la începutul algoritmului, așa că începem prima rulare a structurii repetitive cât-timp.
1)
s <- 0 + (132 % 10) * (132 % 2)
s <- 0 + 2 * 0
s <- 0
n <- 132 / 10
n <- 13
În prima rulare a structurii repetitive cât-timp, am verificat dacă 132 se împarte exact la doi (sau dacă este par), și se împarte, restul împărțirii numărului 132 la 2 este 0, nu există. Prin urmare, 132%10 se va înmulți cu 0, iar variabila s nu va primi nimic.
2) Pentru n <- 13
s <- 0 + (13 % 10) * (13 % 2)
s <- 0 + 3 * 1
s <- 3
n <- 13/10
n <- 1
În a doua rulare a structurii repetitive cât-timp observăm că s-a adăugat cifra 3 la sumă, fiind impară, deoarece restul împărțirii lui 13 la 2 rezultă 1 (13 % 2 = 1)
Practic, testul despre care îți spuneam mai sus n%10 este înmulțit cu 1 daca ultima cifră este impară și cu 0 dacă este pară)
3) Pentru n <- 1
s <- 3 + (1%10) * (1%2)
s <- 3 + 1 * 1
s <- 4
Așadar, s <- 4, reprezentând suma cifrelor impare ale lui 132.
Sper că ai înțeles, spune-mi dacă ai nelămuriri.