Sunteți pe pagina 1din 17

INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI

Str. Icoanei Nr.19, sector 2, telefon: 0212118841, 0212118485; fax: 0212107531 www.ismb.edu.ro

SUBIECTELE PROBEI PRACTICE PENTRU EXAMENUL DE ATESTAT PROFESIONAL LA INFORMATIC, 2009

PROGRAMARE
SPECIALIZAREA MATEMATIC INFORMATIC, INTENSIV INFORMATIC Subiectul nr.1
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 numrul natural 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 (1 k n) reprezentnd eticheta unui vrf al arborelui din enun. Subprogramul returneaz numrul tuturor 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 principal Pascal/C/C++, care s determine afiarea pe ecran a etichetelor tuturor frunzelor arborelui cu rdcin din enunul problemei, folosind apeluri utile ale subprogramelor S1 i S2. Exemplu. Dac fiierul date.in are coninutul alturat, programul va afia pe ecran numerele urmtoare: 1 4 7 8 8 6 5 5 2 0 3 3 3

Subiectul nr. 2
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural n (1 n 100), iar pe a doua linie sunt scrise n numere naturale, separate prin cte un spaiu. Se consider subprogramele:
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

S1 cu un singur parametru k prin intermediul cruia primete un numr natural nenul cu cel mult 4 cifre, k>1; subprogramul returneaz cel mai mic divizor al numrului k, divizor diferit de 1; S2 cu doi parametri, care primete prin intermediul parametrilor: n,un numr natural n (1 n 100); v,un tablou unidimensional format din n (1 n 100) componente ce memoreaz numere ntregi, fiecare avnd cel mult patru cifre. Subprogramul determin ordonarea cresctoare a valorilor memorate de componentele tabloului primit prin intermediul parametrului v i 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 programul principal 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 prime 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: 3 3 17 101 8 12 101 9 3 28 3 17 24

Subiectul nr. 3
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 componente care memoreaz numere ntregi, fiecare avnd cel mult 3 cifre. Subprogramul returneaz suma tuturor valorilor componentelor tabloului unidimensional v. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2;
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

c) Scriei un program principal Pascal/C/C++, care citete de la tastatur un numr


natural k (0 k<30) i apoi, folosind apeluri utile ale subprogramelor S1 i S2, determin i afieaz pe ecran toate etichetele vrfurilor grafului G ale cror grade sunt egale cu k. Etichetele se vor afia pe o singur linie, separate prin cte un spaiu, n ordinea cresctoare a valorilor lor. Dac graful nu are niciun vrf cu gradul egal cu k, atunci programul va afia valoarea 0. Exemplu. Dac k=3 iar fiierul date.in are coninutul alturat, atunci programul va afia pe ecran etichetele urmtoare: 1 2 6 7
7 0 1 0 0 0 1 1 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. 4
Fiierul date.in conine o singur linie pe care este scris un text de cel mult 250 de caractere, format din cifre, spaii, litere mici sau mari ale alfabetului englez. 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 numrul de apariii ale caracterului c n irul s. 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 textul din fiierul date.in i afieaz pe ecran, pe o singur linie, separate prin cte un spaiu, n ordine alfabetic, toate literele mici distincte ale alfabetului englez care apar n textul citit. Dac textul nu conine nicio liter mic, atunci programul va afia mesajul NU. Exemplu. Dac fiierul date.in are coninutul alturat, programul va afia pe ecran literele urmtoare: a c d e f i l m n o r t x Examen de ATESTARE la informatica

Subiectul nr. 5
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; Cerine:
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

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 mai sus; k un numr natural cu cel mult patru 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 principal 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 patru cifre, iar apoi, folosind apeluri utile ale subprogramului S1, construiete o list simplu nlnuit alocat dinamic ale crei noduri s memoreze n cmpul nr toate numerele pare din irul s. Programul, folosind apeluri utile ale subprogramului S2, va scrie n fiierul date.out toate numerele pare 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 par atunci programul va scrie n fiier mesajul NU EXISTA. Exemplu. Dac n=10 iar irul s este format din numerele: 5 24 88 123 2 49 6 21 6 10 atunci fiierul date.out va avea coninutul alturat. 10 6 6 2 88 24

Subiectul nr. 6
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 numrul natural 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 (1 k n) reprezentnd eticheta unui vrf al arborelui din enun. Subprogramul returneaz nivelul pe care se gsete vrful cu eticheta k. Se consider c rdcina se gsete pe nivelul 0. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2; c) Scriei un program principal Pascal/C/C++, care citete de la tastatur un numr natural nv (0<nv<100) i care s determine afiarea pe ecran a etichetelor tuturor nodurilor
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

arborelui din enunul problemei care se gsesc pe nivelul nv, folosind apeluri utile ale subprogramelor S1 i S2. Exemplu. Dac fiierul date.in are coninutul alturat i nv=2 atunci programul va afia pe ecran numerele urmtoare: 4 6 7 8 8 6 5 5 2 0 3 3 3

Subiectul nr. 7
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr natural n (1 n 10), 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 care primete prin intermediul singurului su parametru x un numr natural de maximum 4 cifre; subprogramul returneaz TRUE/1 dac valoarea parametrului x este numr prim, altfel va returna FALSE/0; S2 care primete prin intermediul singurului su parametru x un numr natural cu cel mult 4 cifre; subprogramul returneaz rsturnatul numrului primit prin parametrul x, adic numrul obinut prin inversarea cifrelor lui x. De exemplu, pentru x=1234, subprogramul va returna numrul 4321. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2; c) S se scrie programul principal Pascal/C/C++ care s citeasc din fiierul date.in de pe prima linie numrul n i apoi de pe a doua linie cele n numere naturale formate fiecare din cel mult 4 cifre. Folosind apeluri utile ale subprogramelor S1 i S2, programul va determina i va afia pe ecran, pe o singur linie, separate prin cte un spaiu, toate numerele prime care au rsturnatul un numr prim. 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: 13 101 11 3 17 8 13 101 19 11 28 3 17 24

Subiectul nr. 8
Se consider un graf neorientat G cu n vrfuri (nN, 2<n<30) etichetate cu numerele distincte: 1,2,...,n. Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris numrul n de vrfuri ale grafului G, iar pe urmtoarea linie, n numere naturale, separate prin cte un spaiu, reprezentnd gradele nodurilor grafului G. Se consider subprogramele: S1 cu doi parametri n i d, care determin, n urma apelului, citirea numerelor din fiierul date.in i returnarea prin intermediul parametrului n a numrului de vrfuri ale grafului G, iar prin intermediul parametrului d, a vectorului gradelor nodurilor grafului G, cu n elemente; S2, implementat recursiv, cu doi parametri n i v, care primete prin intermediul parametrilor: - n un numr natural nenul (2<n<30);
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

v un tablou unidimensional cu n componente care memoreaz numere naturale de cel mult 2 cifre. Subprogramul returneaz suma tuturor valorilor componentelor tabloului unidimensional v. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2; c) Scriei un program principal Pascal/C/C++, care determin i afieaz pe ecran numrul de muchii ale grafului G, folosind apeluri utile ale subprogramelor S1 i S2. Exemplu. Dac fiierul date.in are coninutul alturat, programul va afia pe ecran valoarea: 4 6 1 2 2 1 1 1

Subiectul nr. 9
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 puin 3 i cel mult 50 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 50 de caractere doar litere mici, i care returneaz primul caracter din irul s dac primele dou caractere ale acestuia sunt consecutive n mulimea literelor mici ale alfabetul englez, altfel va returna caracterul * ; S2 care primete prin intermediul singurului su parametru s, un ir de caractere format din maximum 50 de caractere i, care, modific irul prin eliminarea primelor dou caractere din acesta; 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 toate cuvintele din fiierul date.in, le modific pe cele care ncep cu dou litere consecutive prin eliminarea din acestea a primelor dou caractere i scrie n fiierul date.out, pe cte o linie, separate prin cte un spaiu, fiecare cuvnt astfel modificat i primul caracter eliminat din acesta. Dac textul nu conine niciun cuvnt care trebuie modificat, atunci n fiier se va scrie mesajul NU EXIST. ac a Exemplu. Dac fiierul date.in conine textul urmtor: reastra f abac atestat colaborare informatica fereastra atunci fiierul date.out va avea coninutul alturat:

Subiectul nr. 10
Se consider declarrile urmtoare utilizate pentru a defini o list simplu nlnuit alocat dinamic prin intermediul creia se reprezint un polinom Q cu coeficieni ntregi: type lista=^nod; nod=record coef,grad:integer; urm:lista end; Cerine:
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

struct nod { int coef; int grad; nod* urm;};

a) Scriei definiia complet a subprogramului S1 cu trei parametri care primete prin intermediul parametrilor: p adresa primului nod din lista definit mai sus; c un numr natural cu cel mult trei cifre; gr o cifr; Subprogramul determin adugarea la nceputul listei, naintea nodului cu adresa p (primul), a unui nou nod care s memoreze coeficientul c i gradul gr. 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 primului nod din lista definit mai sus i care returneaz valoarea polinomului Q, reprezentat prin intermediul listei simplu nlnuit, calculat n punctul -1. c) Scriei un program principal Pascal/C/C++, care citete din fiierul date.in, de pe prima linie a acestuia, un numr natural n (n<10) i apoi, de pe urmtoarele n linii, cte dou numere ntregi ce reprezint coeficientul i gradul unui termen al polinomului Q, numere formate din cel mult 4 cifre, separate prin cte un spaiu pe fiecare linie. Prin apeluri utile ale subprogramelor S1 i S2, programul va construi o list simplu nlnuit alocat dinamic care va reprezenta polinomul Q i va afia pe ecran mesajul DA dac -1 este rdcin a polinomului Q, altfel va afia mesajul NU. Exemplu. Dac fiierul date.in are coninutul alturat, programul va afia pe ecran NU, deoarece valoarea -1 nu este rdcin a polinomului Q corespuztor datelor din fiierul de intrare: Q(x) = X + X 29 X 69 X 84 X + 180
5 4 3 2

6 1 5 1 4 -29 -69 -84 180

3 2 1 0

Subiectul nr. 11
Pe prima linie a fiierului Matrice.in este scris un numr natural n (2<n 30) iar pe fiecare din urmtoarele n linii ale fiierului, sunt scrise cte n numere naturale, formate fiecare din cel mult dou cifre, separate prin cte un spaiu, reprezentnd valorile elementelor unei matrice ptratice A cu n linii. Se consider subprogramele: S1 cu doi parametri n i a, care determin, n urma apelului, citirea numerelor din fiierul Matrice.in i returnarea prin intermediul parametrului n a numrului de linii ale matricei din fiier, iar prin intermediul parametrului a returnarea unui tablou bidimensional ptratic cu n linii care memoreaz valorile elementelor matricei A din fiierul de intrare; S2 cu doi parametri v i k, care primete prin intermediul parametrilor: - v un tablou unidimensional cu cel mult 30 de elemente (valorile memorate de elementele tabloului fiind numere naturale, formate fiecare din cel mult dou cifre); - k un numr natural (2<k 30) reprezentnd numrul efectiv de elemente ale tabloului v. Subprogramul returneaz suma tuturor valorilor elementelor tabloului v. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2;
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

c) Scriei un program principal Pascal/C/C++, care citete de la tastatur un numr


natural m (2<m 100), i care, folosind apeluri utile ale subprogramelor S1 i S2, verific dac matricea A, scris n fiierul Matrice.in, poate fi matricea de adiacen a unui graf orientat cu n vrfuri (etichetate cu 1,2,...,n) i m arce, caz n care programul va afia pe ecran, pe o singur linie, separate prin cte un spaiu, gradele exterioare ale tuturor vrfurilor grafului, n ordinea cresctoare a etichetelor lor. Dac matricea A nu poate fi matricea de adiacen a unui graf orientat cu n vrfuri i m arce, atunci programul va afia pe ecran mesajul IMPOSIBIL. Exemplu. Dac m=4 iar fiierul Matrice.in are coninutul alturat, atunci programul va afia pe ecran urmtoare valori: 1 2 1 3 0 1 0 1 0 1 1 0 0

Subiectul nr. 12
Fiierul Arce.in conine m+1 linii. Pe prima linie sunt scrise dou numere naturale n i m, separate printr-un spaiu, (2<n 30, 2<m 100), reprezentnd numrul n de vrfuri i numrul m de arce ale unui graf orientat G. Pe fiecare dintre urmtoarele m linii ale fiierului Arce.in sunt scrise perechi distincte de cte dou numere naturale x i y, separate printr-un spaiu, (1 x n, 1 x n, x y) reprezentnd cte un arc al grafului dat. Se consider subprogramele: S1 care citete valorile din fiierul Arce.in i construiete un tablou bidimensional reprezentnd matricea de adiacen a grafului G. Subprogramul returneaz prin intermediul parametrilor: - a, tabloul bidimensional construit; - n, numrul de vrfuri ale grafului G; S2 cu trei parametri, care primete prin intermediul parametrilor: - a, un tablou bidimensional ptratic cu cel mult 30 de linii reprezentnd matricea de adiacen a grafului orientat G; - n, un numr natural (1 n 30) reprezentnd numrul de vrfuri ale grafului G. Subprogramul returneaz, prin intermediul parametrului d, un tablou bidimensional ptratic cu n linii, reprezentnd matricea drumurilor pentru graful G. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2; c) S se scrie programul principal Pascal/C/C++ care, folosind apeluri utile ale subprogramelor S1 i S2, construiete i scrie, n fiierul Drum.out, matricea drumurilor pentru graful dat. Liniile matricei drumurilor se vor scrie, n fiier, pe linii separate, cu cte un spaiu ntre elementele fiecrei linii. Exemplu. Dac fiierul Arce.in are coninutul alturat, programul va scrie n fiierul Drum.out: 1 1 1 1 1 1 1 1 1

3 1 2 3

3 2 3 1

Subiectul nr. 13
Fiierul date.in conine cel mult 1000 de numere naturale, fiecare numr fiind format din cel mult patru cifre, numerele fiind scrise pe o singur linie, separate prin cte un spaiu. Cerine:
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

a) Scriei definiia complet a subprogramului S1 care primete, prin intermediul parametrului x, un numr natural nenul, format din cel mult patru cifre, i care returneaz numrul de divizori pozitivi ai lui x. b) Scriei definiia complet a subprogramului S1 cu doi parametri, care primete prin intermediul parametrilor: - n un numr natural, 0<n 1000; - v un ir de n numere naturale, fiecare numr avnd cel mult patru cifre Subprogramul determin ordonarea cresctoare a numerelor din ir i returneaz prin intermediul parametrului v irul ordonat. c) Scriei un program principal 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, respectiv cel mai mare numr, cu exact patru divizori pozitivi din fiierul date.in. Dac niciun numr din fiierul date.in nu are exact patru divizori, atunci pe prima linie a fiierului date.out se va scrie mesajul NU EXISTA.
Exemplu. Dac fiierul date.in are coninutul 123 10 35 899 1202 145 5000 alturat, atunci fiierul date.out va avea urmtorul coninut: 10 1202

Subiectul nr. 14
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: a) Scriei definiia complet a subprogramului S1 cu trei parametri care primete prin intermediul parametrilor: p adresa primului nod al listei definite; q adresa ultimului nod al listei definite; k un numr natural cu cel mult patru cifre; Subprogramul determin adugarea la sfritul listei, dup nodul cu adresa q (ultimul), a unui nou nod care s memoreze numrul k n cmpul nr. Subprogramul returneaz, prin intermediul parametrului q, adresa ultimului nod din lista modificat prin adugare. b) Scriei definiia complet a subprogramului S2 care primete, prin intermediul singurului parametru x, un numr natural de cel mult patru cifre, i care returneaz TRUE/1 dac valoarea parametrului x este numr perfect, altfel va returna FALSE/0. (Un numr natural este perfect dac este egal cu suma divizorilor si pozitivi, fr el nsui). c) Fiierul Numere.in conine cel mult 1000 de numere naturale, numere de cel mult patru cifre, scrise toate pe aceeai linie, separate prin cte un spaiu. Scriei un program principal Pascal/C/C++, care citete numerele din fiierul Numere.in, iar apoi, folosind apeluri utile ale subprogramelor S1 i S2, construiete lista simplu nlnuit alocat dinamic, definit mai
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

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

sus, ale crei noduri memoreaz n cmpul nr toate numerele naturale perfecte din fiierul Numere.in. Valorile memorate de nodurile listei create se vor scrie n fiierul Perfect.out pe o singur linie, separate prin cte un spaiu. Dac fiierul Numere.in nu conine niciun numr perfect atunci programul va scrie n fiierul Perfect.out mesajul NU EXISTA. Exemplu. Dac fiierul Numere.in are coninutul alturat, atunci fiierul Perfect.out va avea urmtorul coninut: 28 6 5 28 24 6 49

Subiectul nr. 15
Se consider un tablou bidimensional ptratic a cu n linii (nN, 3<n<30) ale crui elemente memoreaz doar valori 0 i 1. Liniile i coloanele tabloului sunt numerotate ncepnd cu 1. Fiierul date.in conine pe prima linie numrul n, iar pe urmtoarele n linii sunt scrise cte n valori 0 i 1, separate prin cte un spaiu, reprezentnd valorile elementelor tabloului a. Se consider subprogramele: S1, care primete prin intermediul parametrilor: - a, un tablou bidimensional ptratic cu cel mult 29 de linii; - n, numrul efectiv de linii ale tabloului a; - i, indicele unei linii din tabloul a (1 i n). Subprogramul S1 returneaz TRUE/1 dac linia i conine cel puin trei valori 1 situate pe poziii alturate, altfel va returna FALSE/0. S2, care primete prin intermediul parametrilor: - a, un tablou bidimensional ptratic cu cel mult 29 de linii; - n, numrul efectiv de linii ale tabloului a; - j, indicele unei coloane din tabloul a (1 j n). Subprogramul S2 returneaz un numr natural reprezentnd suma valorilor elementelor din coloana j a tabloului 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 determine i s scrie n fiierul date.out: - pe prima linie: numrul de linii ale tabloului a, linii ce conin cel puin trei valori 1 situate pe poziii alturate; - pe a doua linie, separai prin cte un spaiu, indicii coloanelor ce conin mai multe valori 1 dect valori 0. 6 Exemplu. Dac fiierul date.in are coninutul alturat, 1 0 1 1 1 0 programul va scrie n fiierul date.out urmtoarele: 0 1 1 0 0 1 1 0 1 0 0 1 3 (pentru liniile 1, 4 si 6) 0 0 1 1 1 1 3 6 1 0 1 0 0 0 0 1 1 1 1 1

Subiectul nr. 16
Se consider declarrile urmtoare utilizate pentru a defini o list dublu nlnuit alocat dinamic: type pnod=^nod; struct nod

INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

10

nod=record info:integer; st,dr:pnod; end; Se consider subprogramele:

{ int info; nod *st, *dr; };

S1, care primete prin intermediul parametrului p adresa primului nod al listei i scrie n fiierul date.out numerele memorate de nodurile listei n cmpul info, de la ultimul nod spre primul nod, pe o singur linie a fiierului, separate prin cte un spaiu; S2, care primete prin intermediul parametrului p adresa unui nod din list i returneaz TRUE/1 dac cele dou noduri vecine nodului cu adresa p, memoreaz cte un numr par n cmpul info, altfel returneaz FALSE/0.
a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2; c) Scriei un program principal Pascal/C/C++, care citete de pe prima linie a fiierului

Cerine:

date.in un numr natural n (3<n<30) i apoi, de pe a doua linie a fiierului, cele n numere naturale, formate din cel cel mult 4 cifre fiecare, separate prin cte un spaiu. Programul construiete o list dublu nlnuit alocat dinamic (definit mai sus), ale crei noduri vor memora n cmpul info cele n numere citite, n ordinea citirii (primul nod al listei va memora primul numr de pe a doua linie a fiierului). Folosind apeluri utile ale celor dou subprograme S1 i S2, programul determin i afieaz pe prima linie a fiierului date.out toate numerele din nodurile listei, de la ultimul nod spre primul, pe o singur linie, iar pe a doua linie a fiierului date.out numrul de noduri din list ce au proprietatea c fiecare dintre cele dou noduri vecine memoreaz cte un numr par n cmpul info. Exemplu. Dac fiierul date.in are coninutul alturat, programul va scrie n fiierul date.out urmtoarele: 4 11 2 7 6 4 3 2 3 ( nodurile cu info=3, 7 si 11) 8 2 3 4 6 7 2 11 4

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 primete prin intermediul singurului su parametru s un cuvnt din text i returneaz TRUE/1 dac cuvntul s este format doar din literele a, b sau c, indiferent de numrul acestora, altfel subprogramul va returna FALSE/0; S2 care primeste prin intermediul singurului su parametru s un cuvnt din text i returneaz TRUE/1 dac cuvntul s este palindrom, altfel subprogramul va returna FALSE/0. Un cuvnt este palindrom dac citit de la ultima liter ctre prima se obine acelai cuvnt (exemplu: cuvntul elevele este palindrom). 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 textul din fiierul date.in i scrie n fiierul date.out
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

11

pe prima linie, separate prin cte un spaiu, toate cuvintele care sunt formate doar litere a, b sau c, indiferent de numrul de apariii ale acestor litere; dac textul nu conine astfel de cuvinte, se va scrie mesajul NU n fiier. pe a doua linie, separate prin cte un spaiu, toate cuvintele palindrom din text; dac textul nu conine astfel de cuvinte, se va scrie mesajul NU n fiier. abcba abc c acar abccba dacad aa

Exemplu. Dac fiierul date.in are coninutul alturat, programul va scrie n fiierul date.out urmtoarele: abcba abc c abccba dacad aa abcba aba c abccba aa

Subiectul nr. 18
Fiierul date.in conine pe prima linie numrul natural n (2<n<30), iar pe urmtoarele n linii cte n valori 0 sau 1 separate prin cte un spaiu, reprezentnd valorile memorate de elementele unui tablou bidimensional ptratic a cu n linii. Se consider subprogramele: S1 ce primete prin intermediul parametrului n un numr natural (2<n<30) i prin intermediul parametrului a un tablou bidimensional ptratic cu n linii ale crui elemente memoreaz doar valori 0 i 1. Subprogramul S1 returneaz TRUE/1 dac tabloul a poate fi matricea de adiacen a unui un graf neorientat cu n vrfuri etichetate cu numerele distincte: 1,2,...,n, altfel subprogramul va returna FALSE/0; S2 ce primete prin intermediul parametrului n un numr natural (2<n<30) i prin intermediul parametrului a un tablou bidimensional ptratic cu n linii ale crui elemente memoreaz doar valori 0 i 1, reprezentnd matricea de adiacen a unui graf neorientat cu n vrfuri. Subprogramul S2 afieaz pe prima linie a ecranului, separate prin cte un spaiu, etichetele tuturor nodurilor grafului n ordinea descresctoare a gradelor lor. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2; c) Scriei un program principal Pascal/C/C++, care citete din fiierul date.in numrul natural n i valorile elementelor tabloului bidimensional ptratic a cu n linii. Programul, folosind apeluri utile ale subprogramelor S1 i S2, afieaz pe ecran: - pe prima linie: mesajul DA dac tabloul a poate fi matricea de adiacen a unui graf neorientat cu n vrfuri etichetate cu numerele distincte: 1,2,...,n, altfel va afia mesajul NU; - pe linia a doua, separate prin cte un spaiu, etichetele tuturor nodurilor grafului n ordinea descresctoare a gradelor lor dac tabloul a este matricea de adiacen a unui graf neorientat cu n vrfuri, iar n caz contrar se va fia mesajul NU. Exemplu. Dac fiierul date.in are coninutul alturat, programul va afia n fiierul date.out urmtoarele: DA 4 5 6 2 3 7 1 7 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0

INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

12

Subiectul nr. 19
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 numrul 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 cinci parametri: n, t, k, v i m, 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 (1 k n) reprezentnd eticheta unui vrf al arborelui din enun. Subprogramul S2 returneaz prin intermediul parametrului m numrul tuturor fiilor vrfului cu eticheta k, iar prin intermediul parametrului v returneaz un tablou unidimensional care memoreaz etichetele tuturor fiilor nodului cu eticheta k. 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 s determine i s scrie n fiierul date.out, pe o singur linie, separate prin cte un spaiu, etichetelor tuturor fiilor i nepoilor (fiii fiilor si) nodului rdcin. Exemplu. Dac fiierul date.in va avea coninutul alturat, atunci programul va scrie n fiierul date.out: 2 5 6 4 7 8 7 3 0 2 3 3 5 7

Subiectul nr. 20
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 TRUE/1 dac cuvntul s conine cel puin dou vocale (a,e,i,o,u), altfel subprogramul va returna FALSE/0; S2 care primeste prin intermediul singurului su parametru s un cuvnt din text format din cel putin 2 litere si returneaza cuvantul obtinut prin interschimbarea primei litere din cuvnt cu ultima liter a acestuia. De exemplu, pentru cuvntul abcd primit prin intermediul parametrului s, subprogramul returneaz cuvntul: dbca. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2;
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

13

c) Scriei un program principal Pascal/C/C++, care folosind apeluri utile ale subprogramelor S1 i S2, citete textul din fiierul date.in i l modific interschimband prima si ultima litera a fiecarui cuvant din text care contine cel putin dou vocale. Programul scrie noul text n fiierul date.out pe o singur linie.

Exemplu. Dac fiierul date.in are coninutul alturat, programul va scrie n fiierul date.out urmtoarele: ina era un nreioc si un pix

ani are un creion si un pix

Subiectul nr. 21
In fiierul date.in se gsesc pe o singur linie, separate prin cte un spaiu, mai multe numere naturale din intervalul [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 numrul format din prima i ultima cifr a valorii parametrului k; Exemplu. Pentru k=12345 subprogramul returneaz valoarea 15. S2 cu un singur parametru k prin intermediul cruia primete un numr natural nenul cu cel mult 6 cifre, k>9; subprogramul returneaz cel mai mic numr prim mai mare sau egal cu k. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2; c) S se scrie programul principal Pascal/C/C++ care s determine pentru fiecare numr x, citit din fiierul date.in, cel mai mic numr prim mai mare sau egal cu numrul format din prima i ultima cifr a lui x, n aceast ordine, folosind apeluri utile ale subprogramelor S1 i S2. Numerele prime determinate se vor afia pe ecran, pe o singur linie, separate cte un spatiu. Exemplu. Dac fiierul date.in are coninutul alturat, programul va afia numerele urmtoare: 37 17 29 11 3456 12345 22347 12321

Subiectul nr. 22
Se consider declarrile urmtoare utilizate pentru a defini o list simplu nlnuit alocat dinamic: type lista=^nod; nod=record nr:integer; urm:lista end; 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 patru cifre.
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

14

Subprogramul adaug un nod cu informatia 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 principal Pascal/C/C++, care citete de la tastatur un numr natural n format din cel mult 9 cifre 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 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: 23456 2345 234 23 2 n fiierul date.out se va scrie valoarea: 2

Subiectul nr. 23
Se consider un graf orientat 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, 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 a, care determin, n urma apelului, citirea numerelor din fiierul date.in i returneaz prin intermediul parametrilor: - n numrul de vrfuri ale grafului G; - a un tablou bidimensional cu n linii i n coloane care memoreaz valorile elementelor matricei de adiacen A a grafului G; S2 cu trei parametri n, a i p, care primete prin intermediul parametrilor: - n un numr natural nenul (2<n<30); - a un tablou bidimensional ptratic cu n linii i componente numere ntregi, fiecare avnd cel mult 3 cifre; - p un numr natural nenul (0<p n), reprezentnd indicele unei coloane din tabloul a. Subprogramul returneaz suma tuturor valorilor componentelor coloanei p din tabloul 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 citete de la tastatur un numr natural k (0 k<30) i apoi, folosind apeluri utile ale subprogramelor S1 i S2, determin i afieaz pe ecran toate etichetele vrfurilor grafului G ale cror grade interioare sunt egale cu k. Etichetele se vor afia pe o singur linie, separate prin cte un spaiu, n ordinea cresctoare a valorilor lor. Dac graful nu are niciun vrf cu gradul interior egal cu k, atunci programul va afia valoarea 0.

INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

15

Exemplu. Dac k=4 iar fiierul date.in are coninutul alturat, atunci programul va afia pe ecran etichetele urmtoare: 6 7

7
0 1 0 0 0 1 0 1 0 0 0 0 0 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 1 0 1 1 1 0 0 1 1 0

Subiectul nr. 24
Fiierul atestat.in conine cel mult un milion de numere naturale, separate prin cte un spaiu. Fiecare numr este format din cel mult 9 cifre, iar cifrele sunt distincte dou cte dou. Se consider subprogramele: S1, care prin intermediul parametrului nr primete un numr natural cu cel mult nou cifre, iar prin intermediul parametrului d furnizeaz numrul de cifre impare ale numrului nr. Exemplu: pentru nr=617032 se obine d=3; S2, cu trei parametri nr, x i y, care primete prin intermediul parametrului nr un numr natural cu cel mult nou cifre, dintre care cel puin o cifr este impar, i returneaz prin intermediul parametrului x cea mai mic cifr impar din nr iar prin intermediul parametrului y cea mai mare cifr impar din nr. Exemplu: pentru nr=617032 se obine x=1 i y=7. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2; c) Scriei un program principal Pascal/C/C++ care afieaz pe ecran diferena dintre cea mai mare cifr impar i cea mai mic cifr impar pentru primul numr n cu exact dou cifre impare din fiierul atestat.in, folosind apeluri utile ale subprogramelor S1 i S2. Dac fiierul nu conine niciun numr cu exact dou cifre impare se afieaz pe ecran mesajul NU EXISTA. Exemplu. Dac fiierul atestat.in are coninutul alturat, programul va afia pe ecran valoarea 2 8913 614032 81263 90234

Subiectul nr. 25
Fiierul atestat.in conine o singur linie pe care sunt scrise dou numere naturale nenule mai mici dect 30000 fiecare, separate printr-un spaiu. Se consider subprogramele: S1 cu doi parametri, care prin intermediul parametrului k primete un numr natural nenul (1k30000) i furnizeaz prin parametrul x numrul de cifre ale numrului k; S2 cu doi parametri, care prin intermediul parametrului k primete un numr natural nenul (1k30000) i returneaz prin parametrul y cel mai mare numr care se poate construi folosind toate cifrele numrului k. De exemplu, pentru k=10667 subprogramul returneaz prin parametrul y numrul 76610. Cerine: a) Scriei definiia complet a subprogramului S1; b) Scriei definiia complet a subprogramului S2;
INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

16

c) S se scrie programul principal Pascal/C/C++ prin care se citesc din fiierul atestat.in cele dou numere naturale, se completeaz cu 0 la sfrit numrul care are mai puine cifre astfel nct ambele numere s aib acelai numr de cifre, folosind apeluri utile ale subprogramului S1. Programul va determina i va afia pe ecran suma maxim care se poate obine din numerele formate prin rearanjarea cifrelor fiecruia dintre cele dou numere folosind apeluri utile ale subprogramului S2.
Exemplu. Dac fiierul atestat.in are coninutul alturat, programul va afia: 126321 (=53100+73221) 315 27132

Colectivul de autori: prof. Carmen - Nicoleta Minc Liceul Teoretic Ion Neculce, sector 1 prof. Doina - Luminia Dru Liceul Teoretic Dante Alighieri, sector 3 prof. Gilda - Graiela Gebil Colegiul Naional Mihai Viteazul, sector 2 prof. Dan Grigoriu Colegiul Naional de Informatic Tudor Vianu, sector 1 prof. Simona - Mihaela Popa Colegiul Naional Gheorghe Lazr, sector 5 prof. Silviu- Eugen Scuiu Colegiul Naional Mihai Viteazul, sector 2 Coordonator: prof.tefania Penea inspector colar de specialitate informatic, Inspectoratul colar al Municipiului Bucureti

INSPECTORATUL COLAR AL MUNICIPIULUI BUCURETI Inspector colar de specialitate - prof. tefania Penea Subiecte atestat 2009 Programare; specializarea matematic-informatic, intensiv informatic

17

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