II.1 iulie 2020 (M.I)

Sesiunea Iulie 2019

Subiectul al III-lea – Exerciţiul 2

1.Algoritmul alăturat este reprezentat în pseudocod. S-a notat cu a%b restul împărțirii numărului natural a la numărul natural nenul b și cu [c] partea întreagă a numărului real c.
a)Scrieți valorile afișate dacă se citește numărul 240107.   (6p.)
b)Scrieți cel mai mic și cel mai mare număr din intervalul [105,106), cu cifre distincte, care pot fi citite astfel încât, pentru fiecare dintre acestea, în urma executării algoritmului, toate valorile afișate să fie nenule.                                                       (6p.)
c)Scrieți programul C/C++ corespunzător algoritmului dat.                                                                                                          (10p.)
d)Scrieți în pseudocod un algoritm echivalent cu cel dat, înlocuind adecvat a doua structură repetă…până când cu o structură repetitivă de alt tip.                                      (6p.)

Răspuns corect: 1 1 1 0 0. Algoritmul afișează 5 cifre separate cu câte un spațiu, fiecare arătând dacă cifrele pare se află sau nu în număr. Numărul 240107 conţine cifrele pare 0, 2, 4 şi nu conţine cifrele pare 6 şi 8. Se acordă numai 2p. dacă s-a precizat conform cerinței, pe poziția corespunzătoare, doar o valoare, numai 3p. dacă sunt precizate conform cerinței, pe pozițiile corespunzătoare, doar două valori, numai 4p. dacă sunt precizate conform cerinței, pe pozițiile corespunzătoare, doar trei valori și numai 5p. Dacă sunt precizate conform cerinței, pe pozițiile corespunzătoare, doar patru valori sau dacă, în plus față de valorile cerute, sunt afișate și alte valori.

Rezolvare pas cu pas

acbb%10=cxb=0 sau x=1Afişaj
2401070240107nu0nu 
  24010da1da1
 2240107nu0nu 
  24010nu nu 
  2401nu nu 
  240nu nu 
  24nu nu 
  2da1da1 1
 4240107nu0nu 
  24010nu nu 
  240nu nu 
  24da1da1 1 1
 6240107nu0nu 
  24010nu nu 
  2401nu nu 
  240nu nu 
  24nu nu 
  2nu nu 
  0nu da1 1 1 0
 8240107nu0nu 
  24010nu nu 
  2401nu nu 
  240nu nu 
  24nu nu 
  2nu nu 
  0nu da1 1 1 0 0

Pentru răspuns correct se acordă câte 2p. pentru fiecare număr conform cerinței (oricare dintre numerele 11, 101, 110, 1001,1010, 1100). Afişarea numărlui 11 înseamnă că singurele cifre nenule sunt doi de 1.

Pentru a afișa 1 1 1 1 1 este necesar ca numărul să conțină fiecare dintre cele 5 cifre pare, prin urmare cerința se reduce la afla cel mai mic/mare număr natural de 6 cifre care să conțină toate cifrele 0, 2, 4, 6, 8.

Răspuns corect:

102468

986420

Pentru fiecare număr dintre cele două se acordă câte 3p. dacă este conform cerinței și numai câte 1p. dacă are în scrierea sa 5 cifre pare distincte, dar nu este minim/maxim sau nu aparține intervalului indicat.

Pentru program corect se acordă 10 puncte astfel:
-declarare a variabilelor1 punct 
-citire a datelor1 punct 
-afișare a datelor1 punct 
-instrucțiune de decizie2 puncte 
-instrucțiuni repetitive (Se acordă numai 2p. dacă doar una dintre instrucțiunile repetitive este conform cerinței.)3 puncte 
-atribuiri1 punct 
-corectitudine globală a programului1 punct