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

nxcpmAfișare
271021271020 
  2710  
  2711 
  27  
  2  
  0  
 22710212 
  2710  
  271  
  27  
  2122 
  0  
 327102  
    
  0  
    
    
 727102  
  2710  
  271  
  271227 
  2  
  0  
 827102  
    
  0  
 927102  
    
  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 variabile1 punct
-citire date1 punct
-afişare date1 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