Documente Academic
Documente Profesional
Documente Cultură
PROGRAMARE
SPECIALIZAREA MATEMATIC INFORMATIC, INTENSIV INFORMATIC
Subiectul nr. 1
Fiierul numr.in conine pe prima linie un numr natural n, format din cel mult 8
cifre, cel puin o cifr fiind impar.
Se consider subprogramele:
S1 cu doi parametri, care primete prin intermediul parametrilor a i b dou
numere naturale formate fiecare din cel mult 8 cifre; subprogramul determin
eliminarea cifrei unitilor numrului coninut de parametrul a, mutnd-o 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 rsturnatul numrului obinut prin eliminarea tuturor cifrelor
pare din numrul n.
Subiectul nr. 2
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 numrul divizorilor proprii ai
numrului k;
Subiectul nr. 3
In 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 numrul format prin
eliminarea primei i ultimei cifre a valorii parametrului k;
Exemplu. Pentru k=12345 subprogramul returneaz valoarea 234.
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 un program 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 prin eliminarea primei i ultimei cifre a lui x, n aceast ordine,
Subiectul nr. 4
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 din text
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 cel puin dou vocale. Programul scrie noul text
n fiierul date.out pe o singur linie.
Subiectul nr. 5
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.
a e i m n
Subiectul nr. 6
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 i
returneaz cuvntul obinut prin nlocuirea primei litere din cuvntul primit cu
litera mare corespunztoare;
S2 care primeste prin intermediul singurului su parametru s un cuvnt din text
i furnizeaz prin intermediul parametrului s 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 transform
nlocuind prima i ultima liter fiecrui cuvnt din text cu litera mare
corespunztoare, restul caracterelor rmnnd nemodificate. Programul scrie noul
text n fiierul date.out pe o singur linie.
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.
Exemplu. Dac n=11 iar irul s este format din 10 0 490 20 885 5
numerele: 5 24 885 123 20 490 6 21 0 6 10
atunci fiierul date.out va avea coninutul
alturat.
Cerine:
Subiectul nr. 9
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:
Subiectul nr. 10
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;
Subiectul nr. 11
Pe prima linie a fiierului Matrice.in este scris un numr natural n (2<n30) 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<k30) 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;
c) Scriei un program Pascal/C/C++, care citete de la tastatur un numr
natural m (2<m100), i care, folosind apeluri utile ale subprogramelor S1 i S2,
Subiectul nr. 12
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:
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<n1000;
- 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 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 123 10 35 899 1202 145 5000
coninutul alturat, atunci fiierul
date.out va avea urmtorul coninut:
10 1202
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 nenule,
numere de cel mult patru cifre, scrise toate pe aceeai linie, separate prin cte un
spaiu. Scriei un program 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 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, 5 28 24 6 49
atunci fiierul Perfect.out va avea urmtorul coninut:
28 6
Subiectul nr. 15
Un numr natural nenul x se numete ptrat perfect dac exist un alt numr
natural nenul y, cu proprietatea c y*y = x.
Fiierul date.in conine pe prima linie un numr natural nenul n, 1n100, iar pe
cea de-a doua linie n numere naturale de cel mult 9 cifre fiecare, separate prin
cte un spaiu.
Se consider subprogramele:
S1, care primete prin intermediul parametrului x, un numr natural de cel mult
9 cifre i returneaz cel mai mare numr natural nenul al crui ptrat este mai
mic sau egal cu x
S2, care primete prin intermediul parametrilor:
a, un tablou unidimensional cu cel mult 100 de componente care
memoreaz fiecare cte un numr natural de cel mult 9 cifre;
n, numrul efectiv de componente ale tabloului a, n<101.
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, numerele aflate pe cea de-a doua linie a fiierului date.in
care sunt ptrate perfecte, n ordine invers fa de cea n care au fost citite. n
cazul n care nu exist astfel de numere, programul va scrie pe ecran mesajul nu
exista.
Exemplu. Dac fiierul date.in are coninutul 6
alturat, programul va scrie pe ecran urmtoarele: 289 541 27 4 121 16
16
121
4
289
Subiectul nr. 16
Fiierul date.in conine pe prima linie un numr natural nenul n, 1n100, iar pe
cea de-a doua linie n numere naturale de cel mult 9 cifre fiecare, separate prin
cte un spaiu.
Se consider subprogramele:
S1, care primete prin intermediul parametrului x, un numr natural de cel mult
9 cifre i returneaz numrul de divizori primi ai lui x.
S2, care primete prin intermediul parametrilor:
- a, un tablou unidimensional cu cel mult 100 de componente care
memoreaz fiecare cte un numr natural de cel mult 9 cifre;
- n, numrul efectiv de componente ale tabloului a, n<101.
Subprogramul S2 afieaz pe ecran, pe linii separate, valorile memorate de
componentele vectorului 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, numerele aflate pe cea de-a doua linie a fiierului date.in
care au numr maxim de divizori primi n ordinea n care au fost citite.
Subiectul nr. 17
Fiierul date.in conine pe prima linie dou numere naturale nenule m (1m100)
i n, (1n100), iar pe urmtoarele m linii cte n numere ntregi, cu cel mult patru
cifre fiecare, separate prin cte un spaiu, reprezentnd elementele unei matrice
cu m linii i n coloane.
Se consider subprogramele:
S1, cu parametrii:
- a, un tablou bidimensional cu cel mult 100 de linii i cel mult 100 de
coloane de tip integer/int;
- m, numrul efectiv de linii ale matricei a;
- n, numrul efectiv de coloane ale matricei a.
Subprogramul S1 citete din fiierul date.in i furnizeaz prin intermediul
parametrilor si numrul de linii i respectiv coloane, precum i elementele
unei matrice.
S2, care primete prin intermediul parametrilor:
- a, un tablou bidimensional cu cel mult 100 de linii i cel mult 100 de
coloane
- m, numrul efectiv de linii ale matricei a
- c, indicele unei coloane a matricei a.
Subprogramul S2 returneaz numrul de elementele pare ale coloanei c a
matricei a.
Cerine:
a) Scriei definiia complet a subprogramului S1.
b) Scriei definiia complet a subprogramului S2.
c) Scriei un program 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, cel mai mare indice al unei coloane cu numr minim de elemente pare.
Liniile i coloanele matricei vor fi numerotate ncepnd cu 1.
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, cel mai mic indice al unei coloane cu ultima cifr a produsului elementelor
maxim. Liniile i coloanele matricei vor fi numerotate ncepnd cu 1.
Exemplu. Dac fiierul date.in are coninutul alturat, 2 4
programul va scrie pe ecran: 12 95 8 158
27 4 101 3181
3
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 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:
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++, care determin i afieaz pe ecran
etichetele tuturor nodurilor arborelui din enunul problemei care sunt frunze,
folosind apeluri utile ale subprogramelor S1 i S2.
Exemplu. Dac fiierul date.inare coninutul alturat 8
atunci programul va afia pe ecran numerele urmtoare: 6 5 5 2 0 3 3 3
1 4 7 8
Subiectul nr. 20
Fiierul date.in conine dou linii. Pe prima linie a fiierului este scris un numr
natural n (1n10), 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 cifrele numrului
primit prin parametrul x sunt n ordine strict cresctoare, altfel va returna
FALSE/0;
S2 care primete prin intermediul singurului su parametru x un numr natural
cu cel mult 4 cifre; subprogramul returneaz prima cifr a numrului primit prin
parametrul x. De exemplu, pentru x=1234, subprogramul va returna cifra 1.
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 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
Subiectul nr. 21
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 returnarea
vectorului gradelor nodurilor grafului G, cu n elemente;
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 de cel mult 2 cifre.
Subprogramul returneaz TRUE/1, dac toate numerele memorate n vectorul v
sunt egale, sau FALSE/0 altfel.
Cerine:
a) Scriei definiia complet a subprogramului S1;
b) Scriei definiia complet a subprogramului S2;
c) Scriei un program Pascal/C/C++, care determin i afieaz pe ecran
mesajul COMPLET, dac graful G este graf complet i mesajul OARECARE n
orice alt situaie, folosind apeluri utile ale subprogramelor S1 i S2.
Exemplu. Dac fiierul date.in are coninutul alturat, 6
programul va afia pe ecran: OARECARE 5 5 5 4 5 4
Subiectul nr. 22
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:
Subiectul nr. 23
Se consider declarrile urmtoare utilizate pentru a defini o list simplu nlnuit
alocat dinamic prin intermediul creia se reprezint un ir de numere complexe:
type lista=^nod; struct nod
nod=record { float re;
re,im:float; float im;
urm:lista nod* urm;};
end;
Cerine:
a) Scriei definiia complet a subprogramului S1 cu trei parametri care
primete prin intermediul parametrilor:
- p adresa primului nod din lista definit mai sus;
- r un numr real cel mult trei cifre;
- i un numr real.
Subprogramul determin adugarea la nceputul listei, naintea nodului cu adresa
p (primul), a unui nou nod care s memoreze partea real re i partea imaginar
im. Subprogramul returneaz prin intermediul parametrului p adresa primului nod
din lista modificat prin adugare.
Subiectul nr. 24
Fiierul numere.in conine pe prima linie un numr natural nenul n, n<100, iar
pe linia a doua, desprite prin cte un spatiu, n numere naturale avnd cel mult 9
cifre fiecare.
Se consider subprogramele:
S1, care prin intermediul parametrului p primete un numr natural cu cel mult
9 cifre i returneaz rsturnatul (oglinditul) acestui numr.
Exemplu: pentru p=617032 subprogramul va returna valoarea 230716.
S2, cu doi parametri, prin intermediul crora primete:
- un vector v, cu cel mult 100 de componente numere naturale avnd cel
mult 9 cifre fiecare;
- un numr natural nenul n reprezentnd numrul efectiv de componente
ale vectorului v, n<101.
Subprogramul determin afiarea pe ecran, n linie, a valorilor memorate n
vector, separate prin cte un spaiu.
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 din fiierul numere.in cele n numere de pe linia
a doua i afieaz pe ecran, n linie, n ordinea invers citirii, rsturnatele
numerelor din fiier, separate prin cte un spaiu.
Colectivul de autori:
prof. Carmen-Nicoleta Minc - Colegiul Naional de Informatic
Tudor Vianu
prof. Doina - Luminia Dru - Liceul Teoretic Dante Alighieri
prof. Simona - Mihaela Popa - Colegiul Naional Gh. Lazr
prof. Gilda - Graiela Gebil - Colegiul Naional Mihai Viteazul
prof. Victor - Claudiu Manz - Colegiul Naional de Informatic
Tudor Vianu
prof. Dan Rdulescu - Colegiul Naional Octav Onicescu
Coordonator:
prof.tefania Penea inspector colar de specialitate Informatic i
Tehnologia Informatiei i a Comunicaiilor, Inspectoratul colar al
Municipiului Bucureti