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

Se considera algoritmul alaturat descris in pseudocod. (IMAGINE). Scrieţi valoarea afisata in urma executarii algoritmului daca se citeste n=232493.

Anexe:

Răspunsuri la întrebare

Răspuns de Iulica1
17
Algoritmul va afisa 9432.

El verifica o singura data toate cifrele de la 9 la 0 daca exista in numarul dat (in cazul nostru 232493) de la coada la cap.

Pentru primul caz: 
Avem a=9. m=n=232493
Cat timp m!=0 (Adev) si m%10!=a (adica restul impartirii la 10: 232493%10=3 != 9 Adev) atunci m=m/10 = 23249
Avem acum a=9, m=23249
Cat timp m!=0 (Adev 23249 !=0 ) si m%10!=a (adica restul impartirii la 10: 23249%10=9 != 9 Fals) Ramanem cu m= 23249.
Acum verificam daca m!=0, Adev 23249 !=0
Atunci nr = nr*10+m%10 adica nr = 0 + 23249%10=0+9=9.
Acum a devin a-1=9-1=8

Pentru al doilea caz:
Avem a=8. m=n=232493
Cat timp m!=0 (Adev) si m%10!=a (adica restul impartirii la 10: 232493%10=3 != 8 Adev) atunci m=m/10 = 23249
Avem acum a=8, m=23249
Cat timp m!=0 (Adev) si m%10!=a (adica restul impartirii la 10: 23249%10=9 != 8 Adev) atunci m=m/10 = 2324
Avem acum a=8, m=2324
...
Valoare lui m scade renuntand la ultima cifra, ajungem la m=2
...
Cat timp m!=0 (Adev) si m%10!=a (adica restul impartirii la 10: 2%2=2 != 8 Adev) atunci m=m/10 = 0
Avem acum a=8, m=0
Acum verificam daca m!=0, Fals Nu mai adaugam nimic lui nr.

Scadem valoarea lui a. a-1=8-1=7 (La fel ca la 8 si pentru 7, pentru ca 7 nu apare in numar. La fel si pentru 6, si pentru 5, nr ramane neschimbat) 

Ajungem la a=4. 
Acelasi caz ca la 9. (m va fi mereu n si se opreste la cifra care apare in numar de la coada la cap, adica m va fi 23249)
Atunci nr = nr*10+m%10 adica nr = 9*10 + 2324%10=90+4=94.

Ajungem la a=3.
Acelasi caz ca la 4. (m va fi mereu n si se opreste la cifra care apare in numar de la coada la cap, adica m va fi 232493)
Atunci nr = nr*10+m%10 adica nr = 94*10 + 232493%10=940+3=943.

Ajungem la a=2.(m va fi mereu n si se opreste la cifra care apare in numar de la coada la cap, adica m va fi 232)
Acelasi caz ca la 3.
Atunci nr = nr*10+m%10 adica nr = 943*10 + 232%10=9430+2=9432.

Ajungem la a =1. 1 nu apare, m va ajunge la 0 ( ca la 8,7,6,5) deci nr la final va fi 9432.

Alte întrebări interesante