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
| a | c | b | b%10=c | x | b=0 sau x=1 | Afişaj |
| 240107 | 0 | 240107 | nu | 0 | nu | |
| 24010 | da | 1 | da | 1 | ||
| 2 | 240107 | nu | 0 | nu | ||
| 24010 | nu | nu | ||||
| 2401 | nu | nu | ||||
| 240 | nu | nu | ||||
| 24 | nu | nu | ||||
| 2 | da | 1 | da | 1 1 | ||
| 4 | 240107 | nu | 0 | nu | ||
| 24010 | nu | nu | ||||
| 240 | nu | nu | ||||
| 24 | da | 1 | da | 1 1 1 | ||
| 6 | 240107 | nu | 0 | nu | ||
| 24010 | nu | nu | ||||
| 2401 | nu | nu | ||||
| 240 | nu | nu | ||||
| 24 | nu | nu | ||||
| 2 | nu | nu | ||||
| 0 | nu | da | 1 1 1 0 | |||
| 8 | 240107 | nu | 0 | nu | ||
| 24010 | nu | nu | ||||
| 2401 | nu | nu | ||||
| 240 | nu | nu | ||||
| 24 | nu | nu | ||||
| 2 | nu | nu | ||||
| 0 | nu | da | 1 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 variabilelor | 1 punct | |
| -citire a datelor | 1 punct | |
| -afișare a datelor | 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 | |

