Se da urmatorul limbaj pseudocod:
Citeste n
m=0
p=1
Cat timp n>0 executa
Daca n%2!=0 atunci
n=n-1
m=m+(n%10)*p
n=n/10
p=p*10
-----------
Scrie m
Ce valoare se va afisa daca se citeste numarul 56413? Va rog frumos sa-mi explicati pe pasi!
Multumesc anticipat :).
OBS: Numai n=n-1 este in Daca n%2=!0 atunci...
alexubebe:
si unde se incheie while-ul
Răspunsuri la întrebare
Răspuns de
1
la sintaxa daca , acesta verifica daca numarul este impar (ultima cifra este impara) . In caz negativ lasa numarul (cifra) intacta ; daca numarul (cifra) este impara ( caz afirmativ ) il scade cu o unitate.
m = m + (n %10 )* p
aici pune ultima cifra din n ca prima cifra a lui m
n = n/10
elimina ultuma cifra din n
p = p* 10
creste pe in asa fel incat la inmultirea de mai sus , la m , sa fie cu o cifra mai mare , adica sa adauge ca prina cifra de fiecare data
Pe exemplul tau:
n = 56413
m = 0
p = 1
verifica numarul , si ii da impar , deci scade si devine 56412, apoi in pune la inceputul lui m , elimina cifra din n, si creste p (in exact acesta ordine)
m = 2
n = 5641
p = 10
iar acelasi lucru ; e impar , scade si n devine 5640 si adauga la m
m = 02
n = 564
p= 100
iar aceeasi idee , dar de data aceasta este par, deci nu scade din n, acesta ramanand 564
m = 402
n = 56
p = 1000
si asa mai departe pana n ajunge 0
pentru n = 56413
m = 46402
pe scurt , acest cod copiaza numarul , doar ca in loc de cifre impare , apune cifra de dinaintea lor ( cifra ce evident este para)
Sper sa te ajute sa intelegi cum verifici, daca nu ai inteles ceva poti intreba .
m = m + (n %10 )* p
aici pune ultima cifra din n ca prima cifra a lui m
n = n/10
elimina ultuma cifra din n
p = p* 10
creste pe in asa fel incat la inmultirea de mai sus , la m , sa fie cu o cifra mai mare , adica sa adauge ca prina cifra de fiecare data
Pe exemplul tau:
n = 56413
m = 0
p = 1
verifica numarul , si ii da impar , deci scade si devine 56412, apoi in pune la inceputul lui m , elimina cifra din n, si creste p (in exact acesta ordine)
m = 2
n = 5641
p = 10
iar acelasi lucru ; e impar , scade si n devine 5640 si adauga la m
m = 02
n = 564
p= 100
iar aceeasi idee , dar de data aceasta este par, deci nu scade din n, acesta ramanand 564
m = 402
n = 56
p = 1000
si asa mai departe pana n ajunge 0
pentru n = 56413
m = 46402
pe scurt , acest cod copiaza numarul , doar ca in loc de cifre impare , apune cifra de dinaintea lor ( cifra ce evident este para)
Sper sa te ajute sa intelegi cum verifici, daca nu ai inteles ceva poti intreba .
Alte întrebări interesante
Matematică,
8 ani în urmă
Chimie,
8 ani în urmă
Matematică,
8 ani în urmă
Geografie,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă