II.1 august 2019 (S.N.)
Subiectul al II-lea
| 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 grupează în ordine crescătoare, în variabila m, toate cifrele nenule regăsite în variabila n. Pentru precizarea valorii 1227 se acordă 6p.
Rezolvare pas cu pas
| n | x | cp | m | Afișare |
| 27102 | 1 | 27102 | 0 | |
| 2710 | ||||
| 271 | 1 | |||
| 27 | ||||
| 2 | ||||
| 0 | ||||
| 2 | 27102 | 12 | ||
| 2710 | ||||
| 271 | ||||
| 27 | ||||
| 2 | 122 | |||
| 0 | ||||
| 3 | 27102 | |||
| … | ||||
| 0 | ||||
| … | ||||
| 7 | 27102 | |||
| 2710 | ||||
| 271 | ||||
| 27 | 1227 | |||
| 2 | ||||
| 0 | ||||
| 8 | 27102 | |||
| … | ||||
| 0 | ||||
| 9 | 27102 | |||
| … | ||||
| 0 | 1227 |
Pe baza observației de la punctul a) putem alege orice număr din intervalul specificat care conține obligatoriu exact două cifre de 1, restul reprezintă cifră(e) nulă(e). Se acordă câte 2p. pentru oricare trei valori din lista următoare: 11, 101, 110, 1001, 1010, 1100.
| 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 | 2 puncte | |
| -instrucţiuni repetitive (Se acordă numai 2p. dacă doar una dintre instrucțiunile repetitive este conform cerinței.) | 3 puncte | |
| -atribuiri | 1 punct | |
| -corectitudine globală a programului | 1 punct | |

