Sei sulla pagina 1di 15

Subiectul nr.

1
Fiierul numr.in conine pe prima linie un numr natural n, format din cel mult 8 cifre iar cel puin o cifr
este impar.
Se consider subprogramele:
S1 cu doi parametri, a i b, prin intermediul crora primete dou numere naturale formate fiecare din cel
mult 8 cifre; subprogramul determin modificarea coninutului celor doi parametri a i b prin eliminarea
cifrei unitilor numrului coninut de parametrul a, i mutarea ei la sfritul numrului coninut de
parametrul b, returnnd prin intermediul parametrilor a i b noile numere obinute. De exemplu, pentru
valorile 21134 i 61 ale parametrilor a i b, n urma executrii subprogramului S1 valorile returnate prin
intermediul parametrilor vor fi 2113 i 614.
S2 cu un singur parametru, k, prin intermediul cruia primete un numr natural ( k>1); subprogramul
returneaz numrul natural obinut prin eliminarea fiecrei cifre pare din numrul k. De exemplu, pentru
k=12345, subprogramul S2 va returna 135, iar pentru k=177 subprogramul S2 va returna 177.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) S se scrie un program Pascal/C/C++ care s citeasc din fiierul numr.in numrul n, iar apoi,
folosind apeluri utile ale subprogramelor S1 i S2, s afieze pe ecran mesajul DA dac numrul citit este un
palindrom format doar din cifre impare. n caz contrar, va afia mesajul NU.
Exemple:

Dac fiierul numr.in are coninutul alturat, programul va afia 83109327


pe ecran mesajul NU.

Dac fiierul numr.in are coninutul alturat, programul va afia 3571753


pe ecran mesajul DA.

Subiectul nr.2
n fiierul date.in se gsesc pe o singur linie, separate prin cte un spaiu, mai multe numere naturale din
intervalul nchis [10,106-1], reprezentnd un ir de numere naturale.
Se consider subprogramele:

S1 cu un singur parametru, k, prin intermediul cruia primete un numr natural nenul cu cel mult 6
cifre, k>9; subprogramul returneaz numrul obinut prin eliminarea ultimei cifre a valorii parametrului
k;
Exemplu. Pentru k=12345 subprogramul returneaz valoarea 1234.

S2 cu un singur parametru, k, prin intermediul cruia primete un numr natural nenul cu cel mult 6 cifre,
k>9; subprogramul returneaz valoarea 1 dac valoarea parametrului k este un numr prim, altfel
returneaz valoarea 0.

Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) S se scrie un program Pascal/C/C++ care citete irul de numere din fiierul date.in i
nlocuiete fiecare numr x din ir cu cel mai mare prefix numr prim al su. Dac nu exist un astfel de
prefix, numrul x va fi nlocuit n ir cu valoarea 0. Numerele din irul obinut se vor afia pe ecran, pe prima
linie, separate prin cte un spaiu. Se vor folosi apeluri utile ale subprogramelor S1 i S2 pentru
determinarea prefixelor numere prime.

Exemplu. Dac fiierul date.in are coninutul


alturat, programul va afia numerele urmtoare:

13736 12345 22349 226

1373 0 22349 2

Subiectul nr.3
n fiierul date.in se gsesc pe o singur linie, separate prin cte un spaiu, mai multe numere naturale din
intervalul nchis [10,106-1].
Se consider subprogramele:

S1 cu un singur parametru, k, prin intermediul cruia primete un numr natural nenul cu cel mult 6 cifre
(k>9); subprogramul returneaz cea mai mare cifr a valorii parametrului k;
Exemplu. Pentru k=125353 subprogramul returneaz valoarea 5.

S2 cu doi parametri, k i c. Prin intermediul parametrului k primete un numr natural nenul cu cel mult 6
cifre, k>9, iar prin parametrul c primete o cifr. Subprogramul determin eliminarea tuturor apariiilor cifrei
c n numrul k i returneaz numrul rezultat. Dac numrul k nu conine cifra c atunci subprogramul va
returna valoarea lui k nemodificat.
Exemplu. Pentru k=125353 i cifra c=3 subprogramul returneaz valoarea 1255, iar pentru cifra c=7
subprogramul returneaz valoarea 125353.

Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) S se scrie un program Pascal/C/C++ care s determine pentru fiecare numr x, citit din fiierul
date.in, cel mai mare numr natural care se poate construi din cifrele distincte ale acestuia, folosind apeluri
utile ale subprogramelor S1 i S2. Numerele construite se vor afia pe ecran, n linie, separate prin cte un
spaiu, n ordinea n care au fost construite.
Exemplu. Dac fiierul date.in are coninutul
alturat, programul va afia numerele urmtoare:

13736 12345 22349 222

7631 54321 9432 2

Subiectul nr. 4
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural n (1n100), iar
pe a doua linie sunt scrise n numere naturale, formate fiecare din cel mult 4 cifre, separate prin cte un
spaiu.
Se consider subprogramele:
S1 cu un singur parametru, k, prin intermediul cruia primete un numr natural nenul, 1<k<10000;
subprogramul returneaz cel mai mare numr natural ptrat perfect mai mic sau egal cu k;
S2 cu trei parametri, care primete prin intermediul parametrilor:
- p i q , dou numere naturale (1p<q100);
- v,un tablou unidimensional format din cel mult 100 componente, cu indicii de la 1, ce
memoreaz numere naturale, cu cel mult 4 cifre fiecare.
Subprogramul determin ordonarea cresctoare doar a secvenei din vector format din valorile
componentelor v[p], v[p+1], v[p+2],,v[q], restul componentelor tabloului nemodificndu-se, apoi
returneaz tabloul ordonat prin intermediul aceluiai parametru.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) S se scrie un program Pascal/C/C++ care s citeasc din fiierul date.in numrul n i cele n
numere naturale, iar apoi, folosind apeluri utile ale subprogramelor S1 i S2, s determine i s afieze pe
prima linie a ecranului toate numerele ptrate perfecte care se afl pe a doua linie a fiierului date.in, n

ordinea cresctoare a valorilor lor, separate prin cte un spaiu. Dac nu exist astfel de numere se va afia
mesajul NU.
Exemplu. Dac fiierul date.in are coninutul alturat,
programul va afia pe ecran numerele urmtoare:

8
12 121 9 3 28 3 49 24

9 49 121

Subiectul nr.5
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural n (1n100), iar
pe a doua linie sunt scrise n numere naturale, formate fiecare din cel mult 6 cifre, separate prin cte un
spaiu.
Se consider subprogramele:
S1 cu un singur parametru, k, prin intermediul cruia primete un numr natural nenul, 1<k<10000;
subprogramul returneaz suma cifrelor numrului primit prin parametrul k;
S2 cu trei parametri, care primete prin intermediul parametrilor:
- n,un numr natural (1n100);
- p,un numr natural (1p<n);
- v,un tablou unidimensional format din cel mult 100 elemente, cu indicii de la 1, ce memoreaz
numere naturale, cu cel mult 6 cifre fiecare.
Subprogramul determin modificarea coninutului tabloului prin rearanjarea elementelor tabloului situate
pe poziiile p,p+1,p+2,...,n, cresctor dup suma cifrelor fiecrui element, ca n exemplu.
Exemplu. Pentru n=8, p=4 i tabloul cu elementele v=(12,121,9,3,28,3,49,24), dup apelul
subprogramului S2 coninutul tabloului poate fi: v=(12,121,9,3,3,24,28,49) deoarece sumele
cifrelor elementelor sunt, n aceast ordine: 3,4,9,3,3,6,10,13.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) S se scrie un program Pascal/C/C++ care s citeasc din fiierul date.in numrul n i cele n
numere naturale, iar apoi, folosind apeluri utile ale subprogramelor S1 i S2, aranjeaz cele n numere citite
n ordinea cresctoare a sumei cifrelor fiecruia, apoi le afieaz pe ecran, n linie, separate prin cte un
spaiu.
Exemplu. Dac fiierul date.in are coninutul alturat,
programul poate afia pe ecran numerele astfel:

8
12 121 9 3 28 3 49 24

12 3 3 121 24 9 28 49

Subiectul nr.6
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural n (1n100), iar
pe a doua linie sunt scrise n numere naturale, formate fiecare din cel mult 4 cifre, reprezentnd un ir s de
numere. Numerele din fiier sunt separate prin cte un spaiu.
Se consider subprogramele:
S1 cu doi parametri, x i y, prin intermediul crora primete dou numere naturale nenule. Subprogramul
returneaz cea mai mare valoare dintre valorile primite prin intermediul parametrilor x i y;
S2 cu patru parametri, care primete prin intermediul parametrilor:
- v,un tablou unidimensional format din cel mult 100 componente, cu indicii de la 1, ce
memoreaz numere naturale cu cel mult 4 cifre fiecare;
- n, numrul de elemente ale tabloului;
- k, un numr natural kn;
- x, un numr natural de cel mult patru cifre.

Subprogramul insereaz n tabloul v valoarea coninut de parametru x pe poziia k din tablou, i apoi,
returneaz tabloul modificat prin intermediul aceluiai parametru i numrul modificat de elemente prin
intermediul parametrului n.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) S se scrie un program Pascal/C/C++ care citete din fiierul date.in numrul n i irul s de
numere, iar apoi, folosind apeluri utile ale subprogramelor S1 i S2, modific irul insernd dup fiecare
numr s[p] din ir un numr reprezentnd cea mai mare valoare dintre cele situate n ir pe poziiile 1,2,...,p
(1pn). Numerele din irul modificat se vor afia n fiierul date.out, n prima linie, separate prin cte un
spaiu.
Exemplu. Dac fiierul date.in are coninutul alturat, programul va
afia n date.out numerele urmtoare:

4
10 2 14 9

10 10 2 10 14 14 9 14

Subiectul nr.7
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural n (1n100), iar
pe a doua linie sunt scrise n numere naturale, formate fiecare din cel mult 4 cifre, separate prin cte un
spaiu.
Se consider subprogramele:

S1 cu patru parametri (v,n,m,poz), care primete prin intermediul parametrilor:


- v,un tablou unidimensional format din cel mult 100 componente, cu indicii de la 1, ce
memoreaz numere naturale cu cel mult 4 cifre fiecare;
- n, numrul de elemente ale tabloului;
Subprogramul furnizeaz prin parametrul m valoarea elementului maxim din tablou i prin parametrul poz
poziia primei apariii a valorii maxime memorate de elementele tabloului.

S2 cu doi parametri, care primete prin intermediul parametrilor:


- v,un tablou unidimensional format din cel mult 100 componente, cu indicii de la 1, ce
memoreaz numere naturale cu cel mult 4 cifre fiecare;
- n numrul de elemente ale tabloului;
Subprogramul permut circular la stnga cu o poziie elementele tabloului v i furnizeaz tabloul modificat
prin intermediul aceluiai parametru. De exemplu, dac tabloul are coninutul v=(1,2,3,4,5), atunci
dup apelul subprogramului va avea coninutul v=(2,3,4,5,1).

Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++ care citete din fiierul date.in numrul n i cele n numere
naturale n tabloul unidimensional v, iar apoi, folosind apeluri utile ale subprogramelor S1 i S2, permut
circular la stnga valorile din tabloul v astfel nct pe ultima poziie s fie situat valoarea maxim memorat
n tablou. Valorile tabloului se vor afia n fiierul date.out
Exemplu. Dac fiierul date.in are coninutul alturat, 8
3 10 40 70 25 70 60 6
programul va afia pe ecran numerele urmtoare:
25 70 60 6 3 10 40 70

Subiectul nr.8
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural n (1n100), iar
pe a doua linie sunt scrise n numere naturale, formate fiecare din cel mult 4 cifre, separate prin cte un
spaiu.
Se consider subprogramele:

S1 cu trei parametri, care primete prin intermediul parametrilor:


- n, un numr natural nenul (n100);
- i, un numr natural (1in);
- v, un tablou unidimensional format cu n componente, ce memoreaz numere naturale, cu cel
mult 4 cifre fiecare.
Subprogramul determin eliminarea din tabloul v a elementului v[i], actualiznd valoarea parametrului
n.Tabloul modificat este furnizat tot prin parametrul v.
S2 cu un singur parametru k, prin intermediul cruia primete un numr natural, k>1; subprogramul
returneaz o valoare natural reprezentnd cel mai mic divizor prim al numrului k.

Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) S se scrie un program Pascal/C/C++ care s citeasc din fiierul date.in numrul n i cele n
numere naturale, iar apoi, folosind apeluri utile ale subprogramelor S1 i S2, s elimine din irul aflat pe a
doua linie, un numr minim de elemente, astfel nct s nu existe dou numere prime aflate pe poziii
consecutive. irul obinut va fi afiat pe ecran, pe o linie, numerele din ir separate prin cte un spaiu.
Exemplu. Dac fiierul date.in are coninutul alturat, 10
o soluie posibil este :
12 6 3 2 5 9 7 8 13 17
12 6 3 9 7 8 13
Subiectul nr.9
Fiierul date.in conine cel mult 100 de numere naturale, fiecare numr fiind format din cel mult patru cifre,
numerele fiind scrise pe o singur linie, separate prin cte un spaiu.
Se consider subprogramele:

S1 cu un singur parametru, x, prin intermediul cruia primete un numr natural nenul format din cel mult
patru cifre i care returneaz valoarea 1 dac valoarea parametrului x este un numr prim i 0 n caz
contrar.
S2 cu doi parametri, care primete prin intermediul parametrilor:
- n, un numr natural, 0<n100;
- v,un ir de n numere naturale, fiecare numr avnd cel mult patru cifre.
Subprogramul furnizeaz prin parametrul v irul ordonat cresctor.

Cerine:
a) Scriei definiia complet a subprogramului S1.
b) Scriei definiia complet a subprogramului S2.
c) Scriei un program Pascal/C/C++, care citete din fiierul date.in toate numerele i, folosind
apeluri utile ale subprogramelor S1 i S2, scrie n fiierul date.out, pe o singur linie, separate printr-un
spaiu, dou numere naturale reprezentnd cel mai mic numr prim, respectiv cel mai mare numr prim din
fiierul date.in. Dac niciun numr din fiierul date.in nu este numr prim, atunci pe prima linie a
fiierului date.out se va scrie mesajul NU EXISTA.
Exemplu. Dac fiierul date.in are coninutul alturat, 3 5 7 13 56 778 99
atunci fiierul date.out va avea urmtorul coninut:
3 13

Subiectul nr.10
Fiierul date.in conine pe prima linie un numr natural nenul n, (1n30), iar pe urmtoarele n linii cte
n numere ntregi, cu cel mult patru cifre fiecare, separate prin cte un spaiu, reprezentnd elementele unei
matrice cu n linii i n coloane.
Se consider subprogramele:

S1, cu doi parametri:


- a, un tablou bidimensional cu cel mult 30 de linii i cel mult 30 de coloane, ce memoreaza
numere ntregi;
- n, numrul efectiv de linii i coloane ale matricei a.
Subprogramul S1 citete din fiierul date.in i furnizeaz, prin intermediul parametrilor si, elementele
unei matrice precum i numrul de linii i coloane.
S2, cu doi parametri, care primete prin intermediul parametrilor:
- a, un tablou bidimensional cu cel mult 30 de linii i cel mult 30 de coloane
- L, indicele unei linii din matricea a.
Subprogramul S2 returneaz suma elementelor aflate pe diagonala paralel cu diagonala secundar
care pornete cu primul element al liniei L.

Cerine:
a) Scriei definiia complet a subprogramului S1.
b) Scriei definiia complet a subprogramului S2.
c) Scriei un program Pascal/C/C++ care, folosind apeluri utile ale subprogramelor S1 i S2, citete
datele din fiierul date.in i scrie pe ecran, cea mai mare sum care se poate obine adunnd elementele
aflate pe una dintre diagonalele paralele cu diagonala secundar, situate deasupra acestei diagonale
secundare.
4
Exemplu. Dac fiierul date.in are coninutul alturat, programul va 12
scrie pe ecran valoarea: 36.
27
Dintre: 12; 27+9; 1+4+8, cea mai mare sum este dat de 27+9=36. 1
9
Diagonala secundar conine numerele 9,2,1,2

9
4
2
5

8
1
3
8

2
4
7
2

Subiectul nr.11
Fiierul date.in conine pe prima linie dou numere naturale nenule m i n (1m30,1n30), separate
printr-un spaiu.
Se consider subprogramele:
S1, cu trei parametri, care primete prin intermediul parametrilor:
A, un tablou bidimensional cu cel mult 30 de linii i cel mult 30 de coloane, cu elemente numere ntregi
formate din cel mult patru cifre.
- m, numrul efectiv de linii ale matricei A, 1m30;
- n, numrul efectiv de coloane ale matricei A, 1n30.
Subprogramul S1 citete din fiierul date.in numerele m i n, iniializeaz fiecare element al tabloului A
cu valoarea -1 i furnizeaz prin intermediul parametrilor si numrul de linii i respectiv coloane,
precum i elementele tabloului bidimensional;

S2,cu patru parametri, care primete prin intermediul parametrilor:


- A, un tablou bidimensional cu cel mult 30 de linii i cel mult 30 de coloane, cu elemente de tip
ntreg;
- m, numrul efectiv de linii ale matricei A, 1m30;
- n, numrul efectiv de coloane ale matricei A, 1n30.

x, un numr ntreg format din cel mult 4 cifre;


i i j dou numere naturale reprezentnd indicii liniei i coloanei unui element Aij din
matricea A.
Subprogramul modific valorile elementelor vecine cu elementul Aij pe orizontal, pe vertical i pe
diagonal, care sunt egale cu -1 cu valoarea lui x+1.
-

Cerine:
a) Scriei definiia complet a subprogramului S1.
b) Scriei definiia complet a subprogramului S2.
c) Scriei un program principal Pascal/C/C++ care, folosind apeluri utile ale subprogramelor S1 i S2,
citete datele din fiierul date.in, construiete o matrice A cu n linii i m coloane care are elementul A11
egal cu valoarea 0 i restul elementelor ca n exemplu. Matricea construit se va scrie n fiierul date.out
cte o linie a matricei pe cte o linie a fiierului, numerele de pe fiecare linie fiind separate prin cte un
spaiu.
Exemplu. Dac fiierul date.in are coninutul alturat, programul va 7
scrie n fiierul date.out:
0
1
2
3
4
5
6

1
1
2
3
4
5
6

2
2
2
3
4
5
6

3
3
3
3
4
5
6

4
4
4
4
4
5
6

5
5
5
5
5
5
6

6
6
6
6
6
6
6

7
7
7
7
7
7
7

Subiectul nr.12
Fiierul date.in conine pe prima linie dou numere naturale nenule m i n (1m30, 1n30), iar pe
urmtoarele m linii cte n numere ntregi, cu cel mult 4 cifre fiecare, separate prin cte un spaiu,
reprezentnd elementele unei matrice A cu m linii i n coloane.

Se consider subprogramele:
S1, cu parametrii:
- A, o matrice cu cel mult 30 de linii i cel mult 30 de coloane, i elemente numere ntregi formate din
cel mult 4 cifre fiecare;
- m, un numr natural reprezentnd numrul efectiv de linii ale matricei A, 1m30;
- n, un numr natural reprezentnd numrul efectiv de coloane ale matricei A, 1n30.
Subprogramul S1 determin citirea i memorarea n parametrii m i n a celor dou numere coninute de
prima linie a fiierului date.in, apoi citirea i memorarea n variabila A a celor mxn numere scrise pe
urmtoarele m linii, reprezentnd elementele matricei A. Subprogramul va furniza valorile citite prin
intermediul parametrilor.

S2, care primete prin intermediul parametrilor:


- A, o matrice cu cel mult 30 de linii i cel mult 30 de coloane, i elemente numere ntregi formate din
cel mult 4 cifre fiecare;
- n, un numr natural reprezentnd numrul efectiv de coloane ale matricei A, 1n30.
- k, un numr natural , 1<km
Subprogramul furnizeaz suma elementelor situate pe linia k n matricea A.
Cerine:
a) Scriei definiia complet a subprogramului S1.
b) Scriei definiia complet a subprogramului S2.
c) Scriei un program principal Pascal/C/C++ care, folosind apeluri utile ale subprogramelor S1 i S2,
citete matricea A din fiierul date.in, calculeaz pentru fiecare linie a matricei suma elementelor
corespunztoare i afieaz pe ecran indicele primei linii din matrice de sum maxim, precum i valoarea
acestei sume. Cele dou numere sunt afiate pe aceeai linie, separate printr-un spaiu.
Exemplu.
Dac fiierul
date.in are coninutul alturat, 6 7
programul va scrie pe ecran: 4 39 (indicii liniilor de suma maxim 4 3 8
sunt: 4 i 6).
5 1 3
6 7 4
3 8 1
1 2 1
4 7 9

5
5
9
9
3
9

8
9
3
7
5
3

0
6
2
8
2
4

2
8
1
3
9
3

Subiectul nr.13
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural n, (1n100) iar
pe urmtoarele n linii sunt scrise cte n numere naturale, formate fiecare din cel mult 4 cifre, separate prin
cte un spaiu.
Se consider subprogramele:
S1 cu trei parametri, care primete prin intermediul parametrilor:
- a,un tablou bidimensional format din cel mult 30 de linii i cel mult 30 de coloane cu elemente
numere ntregi;
- n,(1n100) numrul efectiv de linii i de coloane ale matricei a;
- max, un numr natural nenul.
Subprogramul furnizeaz prin intermediul parametrului max, elementul maxim de pe diagonala
principal a matricei a.

S2 cu doi parametri, care primete, prin intermediul parametrilor:


- a,un tablou bidimensional format din cel mult 30 de linii i cel mult 30 de coloane cu elemente
numere ntregi;
- n,numrul efectiv de linii i de coloane ale matricei a.
Subprogramul returneaz suma elementelor situate pe rama matricei, format din elementele situate pe
prima linie, prima coloan, ultima linie i ultima coloan a matricei.

Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program principal Pasca/C/C++ care, folosind apeluri utile ale subprogramelor S1 i S2,
s citeasc datele din fiierul date.in i care s scrie pe ecran, pe linii separate, elementul maxim de pe
diagonala principal i suma elementelor de pe rama matricei.
4
Exemplu.
Dac fiierul
date.in are coninutul alturat, 0 2 4 6
programul va afia pe ecran numerele urmtoare:
1 3 5 7
6 4 2 8
Elementul maxim = 9
3 5 7 9
Suma = 58
Subiectul nr.14
Fiierul date.in conine pe prima linie un cuvnt format din cel mult 50 de caractere, doar litere mici ale
alfabetului englez.
Se consider subprogramele:

S1 care primeste prin intermediul singurului su parametru s un cuvnt i returneaz numrul de


consoane coninute de cuvntul s (se consider vocale literele: a,e,i,o,u);

S2 care primeste prin intermediul singurului su parametrul s un cuvnt (format din cel puin 2 litere) i
returneaz cuvntul obinut prin dublarea fiecrei consoane din cuvntul s. De exemplu, pentru cuvntul
abac (primit prin intermediul parametrului s) subprogramul returneaz cuvntul: abbacc.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++, care folosind apeluri utile ale subprogramelor S1 i S2, citete
textul din fiierul date.in, determin numrul de consoane coninute de cuvntul citit i scrie pe prima linie
a fiierului date.out numrul determinat iar pe a doua linie scrie cuvntul obinut prin dublarea fiecrei
consoane din cuvntul s.
Exemplu.
Dac fiierul
date.in are coninutul
alturat, programul va scrie n fiierul date.out:

bacalaureat

5
bbaccallaurreatt

Subiectul nr.15
Fiierul date.in conine o singur linie pe care este scris un text de cel mult 250 de caractere, care conine
cel puin o cifr.
Se consider subprogramele:
S1 cu un singur parametru, care determin, n urma apelului, citirea textului din fiierul date.in i
returneaz prin intermediul parametrului s textul citit;
S2 cu doi parametri, care primete prin intermediul parametrilor:
- c un caracter;
- s un ir de caractere format din cel mult 250 de caractere.
Subprogramul returneaz valoarea 1 dac numrul de apariii ale caracterului c n irul s este cel puin
1, altfel subrogramul va returna valoarea 0.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++, care, folosind apeluri utile ale subprogramelor S1 i S2, citete
textul din fiierul date.in i afieaz pe ecran, pe o singur linie, separate prin cte un spaiu, n ordine
cresctoare, toate cifrele care se afl n textul citit.
Exemplu. Dac fiierul date.in are coninutul urmtor:

Vacanta mare
14.09.2015

incepe

in

16.06.2015

si

se

termin

pe

programul va afia pe ecran cifrele urmtoare: 0 1 2 4 5 6 9


Subiectul nr.16
Fiierul date.in conine pe prima linie un text format din cel mult 250 de caractere, scris pe o singur linie.
Cuvintele din text sunt separate prin cte un spaiu, iar fiecare cuvnt este format din cel mult 20 caractere,
doar literele mici ale alfabetului englez. Fiierul conine pe a doua linie un cuvnt format din cel mult 20 de
caractere doar literele mici ale alfabetului englez.
Se consider subprogramele:
S1 care primete prin intermediul celor doi parametri t1 i t2 dou cuvinte formate fiecare din cel puin
dou caractere i returneaz valoarea 1 dac cuvntul primit prin parametrul t1 reprezint un prefix
pentru cuvntul primit prin parametrul t2, sau valoarea 0 n caz contrar;
S2 care primeste prin intermediul singurului su parametru t un cuvnt din text i nlocuiete prima,
respectiv ultima liter, cu litera mare corespunztoare i furnizeaz prin intermediul parametrului t cuvntul
obinut. De exemplu, pentru cuvntul intensitate primit prin intermediul parametrului t, subprogramul
returneaz cuvntul: IntensitatE.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++, care citete din fiierul date.in n variabila s textul aflat pe
prima linie i n variabila x cuvntul aflat pe cea de a doua linie din fiier i folosind apeluri utile ale
subprogramelor S1 i S2, modific textul memorat n variabila s prin transformarea n liter mare a primei i
ultimei litere din fiecare cuvnt dint text care are ca prefix cuvntul x. Programul scrie noul text n fiierul
date.out pe o singur linie.
Exemplu. Dac fiierul date.in are coninutul urmtor:
ambii copii amestecau ideile si amintirile de peste zi
am
programul va scrie n fiierul date.out textul:
AmbiI copii AmestecaU ideile si AmintirilE de peste zi

Subiectul nr. 17
Fiierul date.in conine un text format din cel mult 250 de caractere, scris pe o singur linie. Cuvintele din
text sunt separate prin cte un spaiu, iar fiecare cuvnt este format din cel mult 20 caractere, doar literele
mici ale alfabetului englez.
Se consider subprogramele:
S1 care primeste prin intermediul singurului su parametru s un cuvnt i returneaz numrul de vocale
(a,e,i,o,u) coninute de cuvntul s;

S2 care primeste prin intermediul singurului su parametru s un cuvnt format din cel puin 2 litere i
returneaz cuvntul obinut prin oglindirea acestuia. De exemplu, pentru cuvntul abcd primit prin
intermediul parametrului s, subprogramul returneaz cuvntul: dcba.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++, care folosind apeluri utile ale subprogramelor S1 i S2, citete
textul din fiierul date.in i l modific oglindind fiecare cuvnt din text care conine exact trei vocale.
Programul scrie noul text n fiierul date.out pe o singur linie.

Exemplu. Dac fiierul date.in are coninutul urmtor


ani are un creion si un caiet
programul va scrie n fiierul date.out urmtoarele:
ani are un noierc si un teiac
Subiectul nr.18
Fiierul date.in conine un text format din cel mult 255 de caractere, scris pe o singur linie. Cuvintele din
text sunt separate prin unul sau mai multe spaii, iar fiecare cuvnt este format din cel mult 30 de caractere,
doar litere mici ale alfabetului englez.
Se consider subprogramele:
S1 care primete prin intermediul singurului su parametru s, un ir de caractere format din maximum 30
de caractere doar litere mici, i returneaz TRUE/1 dac irul s are literele n ordine alfabetic sau
FALSE/0 altfel;
S2 cu doi parametri s i i, care primete prin intermediul parametrilor:
- s un ir cu cel mult 30 de caractere;
- i un numr natural reprezentnd o poziie n ir.
Subprogramul modific irul s prin eliminarea caracterului situat pe pozitia i n acesta.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) S se scrie un program Pascal/C/C++, care citete textul din fiierul date.in i apoi, folosind
apeluri utile ale subprogramelor S1 i S2, modific fiecare cuvnt care are literele n ordine alfabetic prin
eliminarea caracterelor identice . Cuvintele astfel modificate se vor scrie n fiierul date.out, cte unul pe
linie, n ordinea apariiei lor n text. Cuvintele care au toate literele distincte i n ordine alfabetic vor fi
afiate nemodificate. Dac textul nu conine niciun cuvnt cu proprietatea cerut, atunci n fiier se va scrie
pe prima linie mesajul NU EXIST.
Exemplu. Dac fiierul date.in are coninutul urmtor:
abc dar aaabcc este iar cccffiii
atunci programul va scrie n fiierul date.out:
abc
abc
cfi
Subiectul nr.19
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural n (n<100), iar pe
fiecare din urmtoarele n linii este scris cte un cuvnt format din cel mult 20 de caractere, doar litere mici
ale alfabetului englez.
Se consider subprogramele:
S1 care primete prin intermediul singurului su parametru s un cuvnt i verific dac acesta este
palindrom. Un cuvnt care poate fi citit de la stnga la dreapta i de la dreapta la stnga reprezint
acelai cuvnt este un palindrom, de exemplu: rar, potop.
S2 cu doi parametri s i t, care primete prin parametrul s un ir cu maximum 20 de caractere, litere
mici ale alfabetului englez. Subprogramul returneaz prin intermediul parametrului t irul obinut din s prin
nlocuirea fiecrei vocale cu caracterul *. Se consider vocale literele: a, e, i, o, u.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program principal Pascal/C/C++ care, folosind apeluri utile ale subprogramelor S1 i S2,
citete numrul n i cele n cuvinte, apoi determin toate cuvintele de tip palindrom i le modific nlocuind
fiecare vocal cu caracterul * . Programul afieaz pe ecran cuvintele modificate, n linie, separate prin cte
un spaiu. Dac niciunul dintre cele n cuvinte citite nu este de tip palindrom, atunci programul va afia pe
ecran mesajul NU EXISTA.

6
Exemplu. Dac fiierul date.in are coninutul alturat, cojoc
programul va afia pe ecran:
iarna
ana
c*j*c
primavara
*n*
elevele
*l*v*l*
toamna
Subiectul nr.20
Se consider declarrile urmtoare utilizate pentru a defini o list simplu nlnuit (tip stiv), alocat
dinamic:
type lista=^nod;
nod=record
nr:integer; urm:lista
end;

struct nod
{ int nr;
nod* urm;};

Cerine:
a) Scriei definiia complet a subprogramului S1 cu doi parametri care primete prin intermediul
parametrilor:
- p adresa primului nod din lista definit mai sus;
- k un numr natural cu cel mult nou cifre.
Subprogramul determin adugarea la nceputul listei, naintea nodului cu adresa p (primul), a unui nou nod
care s memoreze n cmpul nr numrul k. Subprogramul returneaz prin intermediul parametrului p
adresa primului nod din lista modificat prin adugare.
b) Scriei definiia complet a subprogramului S2 care primete prin intermediul singurului parametru p
adresa unui nod al listei definite i care returneaz numrul memorat n cmpul nr al acestui nod.
c) Scriei un program Pascal/C/C++, care citete de la tastatur un numr natural n (n<100) i un ir s
format din n numere naturale, fiecare numr din ir avnd cel mult nou cifre, iar apoi, folosind apeluri utile
ale subprogramului S1, construiete o list simplu nlnuit alocat dinamic ale crei noduri memoreaz n
cmpul nr toate numerele din irul s (ncepnd de la poziia a doua) care au ca sufix primul numr din irul
s. Programul, folosind apeluri utile ale subprogramului S2, va scrie n fiierul date.out toate numerele
memorate n nodurile listei, pe o singur linie, separate prin cte un spaiu, n ordinea invers apariiei lor n
irul s. Dac irul s nu conine niciun numr cu sufixul cerut atunci programul va scrie n fiier mesajul NU
EXISTA.
Exemplu. Dac n=11 iar irul s este format din numerele:
15 24 8815 123 215 490 6 21 0 6 1015
atunci fiierul date.out va avea coninutul:
1015 215 8815
Subiectul nr.21
Se consider declarrile urmtoare utilizate pentru a defini o list simplu nlnuit alocat dinamic:
type lista=^nod;
nod=record
nr:integer; urm:lista
end;
Cerine:

struct nod
{ int nr;
nod* urm;};

a) Scriei definiia complet a subprogramului S1 cu doi parametri care primete prin intermediul
parametrilor:
- p adresa primului nod din lista definit;

- k un numr natural cu cel mult nou cifre.


Subprogramul adaug un nod cu informaia k la sfritul listei. Subprogramul returneaz prin intermediul
parametrului p adresa primului nod din lista modificat dup adugare.
b) Scriei definiia complet a subprogramului S2 care primete prin intermediul singurului parametru p
adresa primului nod al listei definite i care returneaz valoarea din cmpul nr al ultimului nod.
c) Scriei un program Pascal/C/C++, care citete de la tastatur un numr natural n nenul, format din cel
mult 9 cifre toate nenule, i construiete o list liniar simplu nlnuit cu toate numerele obinute din
numrul n prin eliminarea succesiv a ultimei cifre, apoi a ultimelor dou cifre, .a.m.d. pn se obine un
numr format dintr-o singur cifr folosind apeluri utile ale subprogramului S1. Programul afieaz pe ecran
valorile memorate de nodurile listei create i, folosind apeluri utile ale subprogramului S2, va scrie n fiierul
date.out valoarea memorat de ultimul nod din list.
Exemplu. Dac n=23456 atunci pe ecran se va afia:
2345 234 23 2
n fiierul date.out se va scrie valoarea: 2

Subiectul nr.22
Se consider un graf neorientat G cu n vrfuri (nN, 2<n<30), dat prin matricea de adiacen A. Vrfurile
grafului sunt etichetate cu numerele distincte: 1,2,...,n.
Fiierul date.in conine n+1 linii. Pe prima linie a fiierului este scris numrul n de vrfuri ale grafului
G, iar pe fiecare dintre urmtoarele n linii, sunt scrise cte n valori aparinnd mulimii {0,1}, separate prin
cte un spaiu, reprezentnd valorile elementelor matricei de adiacen A a grafului G.
Se consider subprogramele:
S1 cu doi parametri n i x, care determin, n urma apelului, citirea numerelor din fiierul date.in i
returneaz prin intermediul parametrilor:
- n numrul de vrfuri ale grafului G;
- x un tablou bidimensional cu n linii i n coloane care memoreaz valorile elementelor
matricei de adiacen A a grafului G;
S2 cu doi parametri n, i v, care primete prin intermediul parametrilor:
- n un numr natural nenul (2<n<30);
- v un tablou unidimensional cu n elemente care memoreaz numere ntregi.
Subprogramul afieaz pe ecran indicii tuturor elementelor nenule ale tabloului unidimensional v.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++, care citete datele din fiierul date.in i de la tastatur un numr
natural k (1kn) i apoi, folosind apeluri utile ale subprogramelor S1 i S2, determin i afieaz pe ecran
lista de adiacena a nodului cu eticheta k. Etichetele din lista de adiacen se vor afia pe o singur linie,
separate prin cte un spaiu, n ordinea descresctoare a valorilor lor. Dac lista este vid, atunci programul
va afia valoarea 0.
7
0
Dac k=2 iar fiierul date.in are coninutul alturat, atunci 1
programul va afia pe ecran etichetele urmtoare:
0
0
1 6 7
0
1
1
Exemplu.

1
0
0
0
0
1
1

0
0
0
1
0
0
0

0
0
1
0
0
0
0

0
0
0
0
0
0
0

1
1
0
0
0
0
1

1
1
0
0
0
1
0

Subiectul nr.23
Se consider un graf orientat G cu n vrfuri (nN, 2<n<30) etichetate cu numerele distincte: 1,2,...,n.
Fiierul date.in conine mai multe linii. Pe prima linie a fiierului este scris numrul natural n reprezentnd
numrul de vrfuri ale grafului G, iar pe urmtoarele linii, perechi de numere naturale, separate prin cte un
spaiu, reprezentnd cte un arc al grafului G.
Se consider subprogramele:

S1 cu doi parametri, care primete prin intermediul parametrilor:


- n,un numar natural reprezentnd numarul de vrfuri ale grafului G
- a, un tablou bidimensional ptratic cu n linii reprezentnd matricea de adiacen a grafului G
Subprogramul determin, n urma apelului, citirea numerelor din fiierul graf.in i returnarea prin
intermediul parametrului n a numrului de vrfuri ale grafului G, iar prin intermediul parametrului a
returnarea matricei de adiacen a grafului G;
S2 cu doi parametri n i v, care primete prin intermediul parametrilor:
- n un numr natural nenul (2<n<30);
- v un tablou unidimensional cu n componente care memoreaz numere naturale.
Subprogramul returneaz numrul valorilor nenule din vector.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++, care, folosind apeluri utile ale subprogramelor S1 i S2,
determin i afieaz pe ecran, pe prima linie, valoarea maxim a gradului extern iar, pe a doua linie,
etichetele nodurilor din graful G care au gradul extern maxim.
7
Exemplu. Dac fiierul graf.in are coninutul alturat, programul va 2 1
afia pe ecran:
2 3
3
2 4
2 4
3 4
7 3
4 5
4 6
4 7
Subiectul nr.24
Se consider un arbore cu rdcin i n vrfuri (nN, 2<n<100), dat prin vectorul de tai. Vrfurile
arborelui sunt etichetate cu numerele distincte: 1,2,...,n.
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural nenul n
reprezentnd numrul de vrfuri ale arborelui dat, iar pe a doua linie sunt scrise n numere naturale, separate
prin cte un spaiu, reprezentnd valorile componentelor vectorului de tai.
Se consider subprogramele:

S1 cu doi parametri n i t, care determin, n urma apelului, citirea numerelor din fiierul date.in i
returnarea prin intermediul parametrului n a numrului de vrfuri ale arborelui din enun, iar prin
intermediul parametrului t returnarea unui tablou unidimensional cu n componente numere naturale
reprezentnd vectorul de tai al arborelui din enun;

S2 cu trei parametri n, t i k, care primete prin intermediul parametrilor:


- n numrul de vrfuri ale arborelui din enun;
- t vectorul de tai al arborelui din enun;
- k un numr natural (1kn) reprezentnd eticheta unui vrf al arborelui din enun.
Subprogramul returneaz numrul tuturor fiilor (descendenilor direci) ai vrfului cu eticheta k.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++ care s citeasc datele din fiierul date.in i de la tastatur un
numr natural m (0<m<n); programul va afia pe o linie a ecranului, separate prin cte un spaiu, etichetelor
tuturor vrfurilor arborelui care au cel puin m fii, folosind apeluri utile ale subprogramelor S1 i S2.
Exemplu.
Dac fiierul
date.in are
coninutul alturat iar m=2, programul va afia
pe ecran numerele urmtoare:
2 3 5 6

Subiectul nr.25

10
6 5 5 2 0 3 3 3 6 2

Fiierul date.in conine pe prima linie un numr natural n (n<10), iar pe fiecare din urmtoarele n linii,
separate prin cte un spaiu, cte dou numere naturale nenule (cu cel mult 9 cifre fiecare) ce reprezint
numrtorul i numitorul unei fracii algebrice.
Se consider declarrile urmtoare utilizate pentru a memora numrtorul i numitorul unei fracii algebrice,
n aceast ordine:
type fractie = record
a,b:integer;
end;

struct fractie
{ int a,b;
};

Cerine:
a) Scriei definiia complet a subprogramului S1 cu doi parametri, de tipul fracie definit mai sus, prin
intermediul crora primete dou fracii algebrice i care returneaz un rezultat de tip fracie ce reprezint
suma celor dou fracii primite prin parametri.
b) Scriei definiia complet a subprogramului S2 cu doi parametri a i b prin intermediul crora
primete dou numere naturale nenule (cu cel mult 9 cifre fiecare) i care returneaz cel mai mare divizor
comun al celor dou numere primite.
c) Scriei un program Pascal/C/C++, care citete din fiierul date.in, de pe prima linie a acestuia,
un numr natural n (n<10) i apoi cele n fracii. Prin apeluri utile ale subprogramelor S1 i S2, programul
va calcula o fracie algebric ireductibil reprezentnd suma celor n fracii citite din fiier. Programul va afia
pe ecran fracia sum determinat sub forma numrtor / numitor, ca n exemplu.
Exemplu. Dac fiierul date.in are coninutul alturat,
programul va afia pe ecran:
91/12

6
1
1
2
6
4
8

5
4
3
2
5
3

Colectivul de autori:
prof. Carmen-Nicoleta Minc

- Colegiul Naional de Informatic Tudor Vianu

prof. Alina Gabriela Boca

- Colegiul Naional Ion Neculce

prof. Doina-Luminia Dru

- Liceul Teoretic Dante Alighieri

prof. Corina Elena Badea

- Liceul Teoretic Alexandru Ioan Cuza

prof. Corina-Elena Vin

- Colegiul Naional de Informatic Tudor Vianu

prof. Doina Mariana Dinc

- Colegiul Naional Octav Onicescu

Comunicaiilor, Inspectoratul colar al Municipiului Bucureti

Coordonato
r:
prof.tefani
a Penea
inspector
colar
de
specialitate
Informatic
i
Tehnologia
Informatiei
i
a

Potrebbero piacerti anche