Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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:
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.
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:
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:
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:
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:
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;
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.
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.
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:
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
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.
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;
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 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;
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
Coordonato
r:
prof.tefani
a Penea
inspector
colar
de
specialitate
Informatic
i
Tehnologia
Informatiei
i
a