II.1 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 valoarea afişată dacă se citește numărul 27102. (6p.) | |
| b) | Scrieţi trei numere distincte din intervalul [10,9999] care pot fi citite, astfel încât în urma executării algoritmului, pentru fiecare dintre acestea, valoarea afişată să fie 11. (6p.) | |
| c) | Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.) | |
| d) | Scrieţi în pseudocod un algoritm, echivalent cu cel dat, înlocuind prima structură cât timp…execută cu o structură de tip pentru…execută. (6p.) | |

Algoritmul construiește un număr format din toate cifrele nenule ale lui n în ordine crescătoare. Răspuns corect: 1227
Rezolvare pas cu pas
| n | m | x | x≤9 | cp | cp≠0 | cp%10=x | Afişaj |
| 27102 | 0 | 1 | |||||
| da | 27102 | da | nu | ||||
| 2710 | da | nu | |||||
| 0*10+1=1 | 271 | da | da | ||||
| 27 | da | nu | |||||
| 2 | da | nu | |||||
| 0 | nu | ||||||
| 1*10+2=12 | 2 | da | 27102 | da | da | ||
| 2710 | da | nu | |||||
| 271 | da | nu | |||||
| 27 | da | nu | |||||
| 12*10+2=122 | 2 | da | da | ||||
| 0 | nu | ||||||
| 3 | da | 27102 | da | nu | |||
| 2710 | da | nu | |||||
| 271 | da | nu | |||||
| 27 | da | nu | |||||
| 2 | da | nu | |||||
| 4 | 0 | nu | |||||
| da | 27102 | da | nu | ||||
| 2710 | da | nu | |||||
| 271 | da | nu | |||||
| 27 | da | nu | |||||
| 2 | da | nu | |||||
| 5 | 0 | nu | |||||
| da | 27102 | da | nu | ||||
| 2710 | da | nu | |||||
| 271 | da | nu | |||||
| 27 | da | nu | |||||
| 2 | da | nu | |||||
| 6 | 0 | nu | |||||
| da | 27102 | da | nu | ||||
| 2710 | da | nu | |||||
| 271 | da | nu | |||||
| 27 | da | nu | |||||
| 2 | da | nu | |||||
| 7 | 0 | nu | |||||
| 27102 | da | nu | |||||
| 2710 | da | nu | |||||
| 271 | da | nu | |||||
| 122*10+7=1227 | 27 | da | da | ||||
| 2 | da | nu | |||||
| 0 | nu | ||||||
| 8 | da | 27102 | da | nu | |||
| 2710 | da | nu | |||||
| 271 | da | nu | |||||
| 27 | da | nu | |||||
| 2 | da | nu | |||||
| 0 | nu | ||||||
| 9 | da | 27102 | da | nu | |||
| 2710 | da | nu | |||||
| 271 | da | nu | |||||
| 27 | da | nu | |||||
| 2 | da | nu | |||||
| 0 | nu | ||||||
| 10 | nu | 1227 |
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 program corect se acordă 10 puncte astfel: | |
| -declarare variabile | 1 punct |
| -citire date | 1 punct |
| -afişare date | 1 punct |
| -instrucțiune de decizie | 3 puncte |
| -instrucţiuni repetitive (Se acordă numai 2p. dacă doar una dintre instrucțiunile repetitive este conform cerinței.) | 2 puncte |
| -atribuiri | 1 punct |
| -corectitudine globală a programului | 1 punct |

