Sunteți pe pagina 1din 6

Limbajul C/C++ Model 2

Test la INFORMATICĂ

Timpul efectiv de lucru este de 3 ore. Se acordă 10 puncte din oficiu.

SUBIECTUL I (30 de puncte)

1. Variabila x este de tip real. Scrieţi o expresie C/C++ care are valoarea 1 dacă şi numai dacă
numărul real memorat în variabila x aparţine intervalului [1,3] [4,7]. (4p.)

2. Variabila x este de tip natural şi memorează un număr cu exact 5 cifre. Scrieţi o secvenţă
C/C++ care interschimbă prima şi ultima cifră din numărul memorat în variabila x. Exemplu:
pentru x=12345, după executarea secvenţei x va deveni 52341. (4p.)

3. Se consideră algoritmul alăturat, descris în


pseudocod, unde funcţia f are ca parametri două funcţia f(a, b) este
numere naturale a şi b, şi returnează o valoare dacă b=0 atunci
naturală. S-a notat cu x%y restul împărţirii numărului returnează a
întreg x la numărul întreg nenul y.
altfel

a) Ce se va afişa în urma executării algoritmului, returnează f(b, a%b)


dacă secvenţa de intrare este formată din
numerele 3,18,6,5,4,8,0? Justificaţi. (6p.) citeşte a, b

b) Scrieţi un set de date de intrare, format din s 0


minim 5 şi maxim 7 elemente nenule, astfel cât timp b≠0 execută
încât programul să afişeze valoarea 60.
s s + f(a,b)
Justificaţi alegerea făcută. (6p.)
a b
c) Scrieţi în pseudocod o funcţie f echivalentă citeşte b
celei date, care să nu fie recursivă. (4p.)
scrie s

d) Scrieţi programul C/C++ echivalent


algoritmului dat. (6p.)
SUBIECTUL al II-lea (30 de puncte)

1. Se spune despre numărul natural n (n>1) că este olimpic dacă poate fi scris ca sumă de două
numere naturale distincte cu aceeaşi sumă a cifrelor. Scrieţi un program C/C++ care citeşte de la
tastatură două numere naturale a şi b (a<b) şi afişează numerele olimpice din intervalul [a,b].
Dacă nu există niciun număr olimpic în acest interval, programul va afişa pe ecran valoarea 0.
(6p.)

2. Se spune despre numărul natural n (n>1) că este norocos dacă atât n, cât şi n+n’ sunt
numere prime, unde n’ este inversul numărului n. Scrieţi un program C/C++ care citeşte de la
tastatură două numere naturale a şi b (a<b) şi afişează numerele norocoase din intervalul (a,b).
De exemplu, 229 este număr norocos deoarece atât el, cât şi numărul rezultat prin adunarea
inversului (1221) sunt prime. (6p.)

3. Considerăm două stive, s1 şi s2, ambele vide. Funcţia push(s,x) inserează elementul x în
vârful stivei s, iar funcţia pop(s) returnează elementul din vârful stivei s şi îl elimină pe acesta
din stivă. Care va fi suma elementelor din stiva s1 în urma executării următoarei secvenţe de
operaţii: push(s1,5); push(s2,6); push(s1,7); push(s2,8); pop(s1); pop(s2);
push(s1,9); push(s2,10); push(s1,pop(s2));? (6p.)

4. În critpografie, cifrul lui Cezar este una dintre cele mai simple şi mai cunoscute tehnici de
criptare. Este un tip de cifru al substituţiei, în care fiecare literă din textul iniţial este înlocuită
cu o literă care se află la o distanţă fixă faţă de cea înlocuită. De exemplu, la o deplasare cu 4
poziţii, a devine e, c devine g, z devine d, etc. Scrieţi un program C/C++ care citeşte de la
tastatură un numărul natural n (numărul deplasărilor, n<20) şi un text cu maxim 255 de
caractere (litere mici ale alfabetului englez şi spaţii) şi afişează pe ecran textul astfel criptat.
Exemplu: pentru n=3 şi textul ana are mere, programul va afişa dqd duh phuh. (6p.)

5. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (2<n<10) şi n*n
numere naturale, reprezentând elementele unei matrici pătratice, cu n linii şi n coloane.
Programul afişează pe ecran valoarea 1 dacă elementele situate sub diagonala principală sunt fie
toate pare, fie toate impare, respectiv 0 în caz contrar. Exemplu: pentru n=4 şi matricea de mai
jos, programul va afişa 1.

1 2 3 4
3 6 2 8
5 7 2 4
9 3 5 8

(6p.)
SUBIECTUL al III-lea (30 de puncte)

1. În câte dintre permutările mulţimii {I,N,F,O} pe prima poziţie va sta o vocală? (4p.)

2. Se consideră funcţia C, definită alăturat. Ce int C(int n){


valoare va returna apelul C(101)? (6p.) if (n<=0) return 0;
if (n%2) return 2 + C(n-1);
return 1 + C(n-2);
}

3. O grilă SUDOKU este formată dintr-o matrice de 9 x 9 căsuţe,


2 4 6 8 5 7 9 1 3
împărţită în 9 submatrici de 3 x 3 căsuţe, numite regiuni, care 1 8 9 6 4 3 2 7 5
respectă următoarele proprietăţi: 5 7 3 2 9 1 4 8 6
 fiecare rând al matricei conţine o singură dată toate cifrele de 4 1 8 3 2 9 5 6 7

la 1 la 9, 6 3 7 4 8 5 1 2 9
9 5 2 1 7 6 3 4 8
 fiecare coloană a matricei conţine o singură dată toate cifrele
7 6 4 5 3 2 8 9 1
de la 1 la 9, 3 2 1 9 6 8 7 5 4
 fiecare dintre cele 9 submatrici, evidenţiate în exemplul 8 9 5 7 1 4 6 3 2
alăturat prin linii îngroşate, conţine o singură dată toate
cifrele de la 1 la 9.

Un puzzle SUDOKU este o matrice 9 x 9 completată parţial, cu numere de la 1 la 9, ca în


exemplul de mai jos. O soluţie a unui astfel de puzzle este o grilă SUDOKU care coincide cu
puzzle-ul pe poziţiile precompletate.

a) Găsiţi o soluţie pentru puzzle-ul SUDOKU alăturat. (4p.)

2 7 1 6 4 8 3
b) Descrieţi, în limbaj natural, o metodă de rezolvare a unui puzzle
8 3 5 2 1 4 6
SUDOKU. (6p.) 4 5 8 7 2 9 1
6 9 4 2 5 3 8 7
c) Scrieţi în C/C++ o funcţie care primeşte ca argument o matrice cu 7 8 4 1 6 2 5
9 x 9 căsuţe, reprezentând un puzzle SUDOKU, în care poziţiile 5 2 6 7 8 4 3 9
3 4 1 9 2 6 8
necompletate sunt egale cu 0. Funcţia afişează pe ecran o matrice 9
9 5 8 7 4 6 3 1 2
x 9 drept soluţie a puzzle-ului, câte o linie a matricei pe o linie a 1 2 6 8 5 9 7
ecranului, cu spaţii între elementele fiecărei linii. Dacă puzzle-ul nu
are nicio soluţie, funcţia va afişa pe ecran valoarea 0. (10p.)
BAREM DE CORECTARE ŞI NOTARE

 Se punctează orice alte modalităţi corecte de rezolvare a cerinţelor.


 Se pot acorda punctaje intermediare, nu şi fracţiuni de punct.

SUBIECTUL I (30 de puncte)

1. Expresie corectă 4p.


2. Secvenţă corectă 4p.
3. a. Valoarea afişată este: 16 6p.
1. descrierea calculului 4p.
2. obţinerea rezultatului corect 2p.
b. Pentru răspuns corect 6p.
1. set corect de date de intrare 3p.
2. justificare 3p.
c. Pentru funcţie corectă (care returnează cel mai mic divizor comun al numerelor 4p.
a şi b)
1. folosirea unei funcţii nerecursive 2p.
2. scrierea corectă a funcţiei 2p.
d. Pentru program corect 6p.
1. declararea corectă a variabilelor 1p.
2. citirea şi afişarea datelor 1p.
3. instrucţiuni de decizie corecte 1p.
4. instrucţiuni repetitive corecte 1p.
5. atribuiri corecte 1p.
6. corectitudinea globală a algoritmului 1p.
SUBIECTUL II (30 de puncte)

1. Pentru program corect 6p.


1. funcţia / secvenţa care verifică dacă un număr este olimpic 4p.
2. corectitudinea globală a programului 2p.
2. Pentru program corect 6p.
1. funcţia / secvenţa care verifică dacă un număr este norocos 4p.
2. corectitudinea globală a programului 2p.
3. Răspuns corect: 24 6p.
1. descrierea calculului 4p.
2. obţinerea rezultatului corect 2p.
4. Pentru program corect 6p.
1. citirea datelor de intrare 1p.
2. criptarea corectă a textului introdus de la tastatură 4p.
3. afişarea textului criptat 1p.
5. Pentru program corect 6p.
1. citirea elementelor matricei 1p.
2. determinarea dacă sub diagonala principală sunt numai elemente pare sau numai 5p.
elemente impare
SUBIECTUL III (30 de puncte)

1. Răspuns corect: 12 4p.


1. descrierea calculului 2p.
2. obţinerea rezultatului corect 2p.
2. Răspuns corect: 52 6p.
1. descrierea calculului 4p.
2. obţinerea rezultatului corect 2p.
3. a. Pentru răspuns corect 4p.

2 7 1 9 6 4 8 5 3
8 3 9 5 2 1 7 4 6
4 6 5 3 8 7 2 9 1
6 9 4 2 5 3 1 8 7
7 8 3 4 1 9 6 2 5
5 1 2 6 7 8 4 3 9
3 4 7 1 9 2 5 6 8
9 5 8 7 4 6 3 1 2
1 2 6 8 3 5 9 7 4

b. Pentru soluţie corectă 6p.


1. descrierea structurii unui algoritm de tip backtracking sau echivalent 3p.
2. testarea validităţii unei configuraţii parţiale 3p.
c. Pentru funcţie corectă 10p.
1. pentru structura funcţiei (argumente) 1p.
2. validarea unei grile parţiale 2p.
3. implementarea unui algoritm valid de tip backtracking sau echivalent 5p.
4. afişarea soluţiei 1p.
5. determinarea inexistenţei soluţiei 1p.

S-ar putea să vă placă și