Documente Academic
Documente Profesional
Documente Cultură
Subiecte Atestat Programare Intensiv 2015 2016
Subiecte Atestat Programare Intensiv 2015 2016
Subiectul 1
n fiierul Numere.txt pe prima linie este memorat un numr natural n (n<10000), iar pe linia
urmtoare un ir de n numere naturale distincte cu maximum 4 cifre fiecare, separate prin cte un
spaiu. Se cere:
a) Afiai pe prima linie a fiierului de ieire Rezultat.out poziia pe care s-ar gsi primul
element din irul aflat pe linia a doua a fiierului, daca irul ar fi ordonat cresctor.
Numerotarea poziiilor elementelor n cadrul irului este de la 1 la n. Alegei un algoritm de
rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de executare.
b) Verificai dac primul numr de pe a doua linie din fiier este numr prim i afiai un mesaj
corespunztor, pe a doua linie a fiierului de ieire (DA sau NU). Vei folosi un subprogram
care primete ca parametru un numr natural x, de cel mult 4 cifre si returneaz TRUE daca
numrul x este prim sau FALSE in caz contrar.
deoarece numrul 267 ar ocupa poziia a cincea n irul ordonat cresctor (7 13 45 79 267 628) i 267
nu este numr prim.
Subiectul 2
4
7
20
11
35
9 21
Fiierul Rezultat.out va avea urmtorul coninut :
11
63
Subiectul 3
Subiectele pentru susinerea examenului de atestat n anul colar 2015-2016,
Matematic informatic- intensiv informatic
Fiierul text Numere.in conine pe prima linie un numr natural nenul n, (2n100) i pe
urmtoarea linie n numere reale pozitive, n ordine strict cresctoare, separate prin cte un spaiu.
a) Utiliznd un algoritm eficient din punct de vedere al execuiei i al memoriei utilizate,
determinai i afiai pe prima linie n fiierul Numere.out cel mai mare numr natural x, cu
proprietatea c n orice interval deschis avnd drept capete dou numere de pe poziii alturate
dintre cele n numere aflate pe linia a doua n fiierul Numere.in se gsesc cel puin x numere
ntregi.
b) Afiai numrul de cifre distincte din numrul x utiliznd un subprogram care primete prin
intermediul parametrului y un numr natural si returneaz prin cel de-al doilea parametru z
numrul cifrelor distincte ale numrului y.
5
3.5 323.1 549 925.3 1312.7
Subiectul 4
Se consider fiierul text Date.in ce conine pe prima linie dou numere naturale nenule, n i
s (n9, s<20), iar pe a doua linie n numere ntregi, separate prin cte un spaiu, fiecare numr avnd
maximum 9 cifre nenule.
a) Afiai n fiierul de ieire Date.out , desprite prin cte un spaiu, numerele situate pe a doua
linie a fiierului Date.in, a cror sum a cifrelor este mai mic dect s, ordonate strict
cresctor. n cazul n care nu exist nici un astfel de numr n fiierul de ieire se va afia
valoarea 0. Vei folosi un subprogram numit cifre, care primete prin intermediul primului
parametru, a, un numr ntreg cu maximum 9 cifre nenule i returneaz, prin intermediul celui
de-al doilea parametrul b, suma cifrelor lui a.
b) Pe o doua linie a fiierului Date.out afiai cel mai mic numr natural format din cifrele
distincte ale numerelor afiate pe prima linie in fiierul Date.out.
Exemplu: Dac fiierul Date.in are urmtorul coninut:
6 18
321 175 999 242477 16 -269
Subiectul 5
Fiierul text Date.in conine cel puin dou i cel mult 10000 de numere naturale distincte, dintre
care cel puin dou sunt pare. Numerele sunt separate prin cte un spaiu i fiecare dintre ele are cel
puin 3 si cel mult 9 cifre.
a) Determinai cele mai mari dou numere pare din fiier, utiliznd un algoritm eficient din punct
de vedere al timpului de executare i al spaiului de memorie utilizat. Cele dou numere vor fi
afiate n pe prima linie a fiierului de ieire Rezultate.out, n ordine descresctoare, separate
printr-un spaiu.
b) Construii in memorie o matrice ptratic cu n linii si n coloane, unde n este numrul de cifre
al primului numr scris n fiierul de ieire. Matricea va fi construit astfel: pe diagonala
principal va conine 0, deasupra diagonalei principale cea mai mare cifr, iar sub diagonala
principal cea mai mic cifr a acestui numr. Matricea va fi afiat pe urmtoarele n linii n
fiierul Rezultate.out, elementele fiecrei linii fiind separate de cte un singur spaiu. Vei
utiliza un subprogram care primete ca parametru un numr natural a de cel mult 9 cifre i
returneaz prin intermediul parametrilor n, max, min numrul de cifre, cifra maxim,
respectiv cifra minim a numrului a.
824 610
0 8 8
2 0 8
2 2 0
Subiectul 6
Fiierul text Numere.txt conine pe prima linie un numr natural n (0<n<100000), iar pe a doua
linie n numere naturale, formate din cel mult 4 cifre, separate prin cte un spaiu.
a) Determinai n mod eficient, din punct de vedere al memoriei i a timpului de executare,
cifrele ce apar n scrierea numerelor situate pe a doua linie a fiierului. Programul va afia n
fiierul de ieire Rezultate.out cifrele (n ordine cresctoare) precum i numrul de apariii al
acestora (pe fiecare linie cifra i numrul ei de apariii separate de un singur spaiu).
b) Verificai dac suma cifrelor impare este un numr palindrom, i afiai pe ecran un mesaj
corespunztor (DA sau NU). Vei utiliza un subprogram care primete ca parametru un numr
natural x de cel mult 4 cifre i returneaz inversul numrului x.
Subiectul 7
n fiierul Numere.txt pe prima linie sunt memorate dou numere naturale n i m (1<n,m<51),
iar pe urmtoarele n linii cte m numere naturale distincte cu maxim 4 cifre fiecare, separate prin cte
un spaiu. Se cere:
c) Afiai pe prima linie a fiierului de ieire Rezultat.out toate numerele din fiierul de intrare
care au cifra de control par. Numerele se vor afia separate prin cte un spaiu, n ordinea
apariiei lor n fiierul de intrare. Cifra de control a unui numr se obine calculnd suma
cifrelor numrului, apoi suma cifrelor sumei i tot asa pn la obinerea unei singure cifre. n
cazul n care nici un numr nu are cifra de control par n fiierul de ieire se va afia mesajul
NU EXISTA. Vei folosi un subprogram care primete ca parametru un numr natural x, cu
cel mult 4 cifre i returneaz cifra de control a valorii reinute de x.
d) n cazul n care pe prima linie a fiierului de ieire au fost afiate valori numerice, atunci s
afieze pe a doua linie a fiierului de ieire cel mai mare numr natural format din cifrele
distincte ale numerelor de pe prima linie a fiierului Rezultat.out. Alegei un algoritm de
rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de executare. Dac
pe prima linia a fiierului de ieire s-a afiat NU EXISTA, atunci pe a doua linie a fiierului de
ieire nu se va afia nimic.
Subiectul 8
Fiierul text Matrice.txt conine pe prima linie un numr natural n (0<n<=50), i un numr
natural k (0<k<=9) iar pe fiecare dintre urmtoarele n linii cte n numere naturale de cel mult 9
cifre, separate prin cte un spaiu, numere care reprezint elementele unei matrice ptratice de
dimensiune n.
a) Construii un vector cu n elemente, fiecare element vi (i=1,2,...,n) al vectorului conine
minimul dintre elementele liniei i, care conine exact k cifre de 1 n reprezentarea sa
binar, sau valoarea zero dac nu exist un astfel de element pe linia i. Afiai elementele
vectorului astfel construit, separate de cte un spaiu pe prima linie n fiierul
Rezultate.out.
Se va utiliza un subprogram cifunu care primete ca parametru un numr natural x, i
returneaz numrul de cifre 1 din reprezentarea binar a numrului x.
b) Pe a doua linie a fiierului de ieire Rezultate.out afiai cel mai mare numr obinut din
cifrele elementului maxim din vectorul format
Exemplu: dac fiierul Matrice.txt are urmtorul coninut:
4 3
11 12 3 15
8 2 17 3
5 0 7 10
13 11 155 16
Subiectul 9
Fiierul Cuvant.in conine cuvinte formate doar din litere mici, separate prin unul sau mai
multe spaii (numrul cuvintelor poate s difere de la un rnd la altul; o linie din fiier conine cel mult
255 de caractere).
Definim randamentul unui cuvnt ca fiind numrul de caractere distincte din cuvnt /
lungimea cuvntului. De exemplu irul caractere are randamentul 5/9=0.56.
a) Afiai n fiierul Rezultate.out, pentru fiecare linie citit din fiierul de intrare cuvintele n
ordinea apariiei lor, precum i randamentul fiecrui cuvnt. Vei folosi un subprogram care
primete ca parametru un ir de caractere s returneaz printr-un al doilea parametru numrul
de caractere distincte ale lui s.
b) Pe ultimul rnd n fiierul de ieire afiai cuvntul cu randamentul cel mai mare. Dac n
fiier exist mai multe astfel de cuvinte afiai-l pe ultimul.
Subiectul 10
Subiectul 11
Fiierul Date.in conine cel mult 10000 numere naturale cu cel mult 2 cifre fiecare, printre care cel
puin un numr par i cel puin un numr impar, separate prin cte un spaiu. Numrul de numere din
fiier este variabil de la o linie la alta.
a) Scriei un program care citete numerele din fiierul Date.in i scrie n fiierul text Date.out
valorile distincte citite, separate prin cte un spaiu, respectndu-se regula: pe prima linie vor
fi scrise numerele impare distincte n ordine cresctoare, iar pe linia a doua numerele pare
distincte, n ordine descresctoare. Alegei o metod eficient din punctul de vedere al
timpului de executare.
b) Calculai suma numerelor pare distincte din fiierul de intrare i eliminai din numrul obinut
cifrele impare. Vei utiliza un subprogram care primete ca parametru un numr natural x de
cel mult 8 cifre i returneaz prin intermediul aceluiai parametru numrul obinut dup
eliminarea cifrelor impare. Rezultatul se va tipri pe a treia linie a fiierului de ieire.
Subiectul 12
Subiectul 13
Fiierul text Numere.in conine cel mult 1000 de numere naturale cu cel mult patru cifre fiecare,
desprite prin cte un spaiu.
a) Scriei programul care citete numerele din fiierul Numere.in i afieaz n fiierul de ieire
Rezultate.out, n ordine cresctoare, acele numerele din fiierul de intrare care au toate cifrele
egale. Pentru a verifica dac toate cifrele unui numr sunt egale vei folosi un subprogram care
primete ca parametru un numr natural x de cel mult patru cifre i returneaz numrul de
cifre distincte ale lui x. Dac fiierul nu conine nici un astfel de numr, atunci se va scrie n
fiierul de ieire mesajul NU EXISTA.
b) Daca exist astfel de numere afiai factorii primi mpreun cu exponenii lor, din
descompunerea n factori primi ai celui mai mare numr care are toate cifrele egale. Afiarea
se va face in fiierul Rezultate.out, ncepnd cu cea dea doua linie, fiecare factor i exponentul
su pe cte o linie n fiier separai de cte un spaiu.
5 7 11 444
22
31
37 1
Cel mai mare numr care are toate cifrele egale este 444 iar 444= 22 + 31 + 371
Subiectul 14
Subiectul 15
Fiierul text Numere.txt conine pe prima linie un numr natural k (0<k<15) si pe urmtoarele
rnduri cel mult 50.000 de numere naturale din intervalul nchis [0, 99], numerele de pe acelai rnd
fiind separate prin cte un spaiu.
a) Scriei un program care afieaz in fiierul de ieire Numere.out, n ordine cresctoare,
separate de cate un spaiu, acele numere din fiierul Numere.txt care au cel puin k divizori
proprii. Utilizai un algoritm eficient din punct de vedere al timpului de executare. Dac un
numr care corespunde cerinei apare de mai multe ori, se va afia o singur dat.
b) Verificai dac cifrele ultimului numr scris n fiierul de ieire Numere.out au aceeai
paritate (toate pare sau toate impare), i afiai pe ecran un mesaj corespunztor (DA sau NU),
Vei folosi un subprogram care primete prin intermediul unui parametru un numr natural n
din intervalul [0, 99] i returneaz att numrul de cifre pare ct i numrul de cifre impare ale
numrului n.
12 24 36
Pe ecran se va afia NU (deoarece 3 i 6 nu sunt de aceeai paritate)
Subiectul 16
n fiierul Cuvant.txt pe prima linie sunt memorate dou numere p (1<p<51) i n (1<n<101),
pe a doua linie un cuvnt cuv i pe urmtoarele n linii cuvinte separate prin unul sau mai multe spaii
(numrul cuvintelor poate s difere de la un rnd la altul; o linie din fiier conine cel mult 255
caractere). Se cere:
a) Afiai n fiierul de ieire Rime.txt pe fiecare linie toate cuvintele de pe linia corespunztoare
din fiierul de intrare care sunt rime cu cuvntul cuv (dou cuvinte sunt rime dac ultimele
p caractere coincid). Cuvintele de pe aceeai linie se vor afia separate prin cte un
spaiu. Dac pe o linie nu exist nici un cuvnt care s ndeplineasc condiia atunci pe
linia corespunztoare n fiierul Rime.txt se va afia mesajul NU EXISTA. Vei folosi
un subprogram care primete ca parametrii dou iruri de caractere i un numr natural p.
Subprogramul va returna valoarea 1 dac cele dou iruri de caractere sunt rime (au ultimele p
caractere identice) sau valoarea 0 n caz contrar.
b) Pe ultima linie a fiierului de ieire se va afia numrul cuvintelor din fiierul de
intrare care ncep cu majuscul (nu se va numra cuvntul de pe a doua linie a
fiierului de intrare).
Subiectul 17
Fiierul atestat.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 literele mici ale alfabetului englez.
a) S se scrie n fiierul atestat.out textul n care fiecare cuvnt care conine cel puin o
consoan s fie nlocuit de inversul su. Se va utiliza un subprogram s1 care primete prin
intermediul singurului su parametru s un cuvnt i returneaz numrul de consoane din
cuvntul s.
b) Pe a doua linie n fiierul atestat.out s se scrie cuvntul de lungime maxim i lungimea lui.
Dac sunt mai multe astfel de cuvinte, se va afia primul gsit.
Subiectul 18
8
Pe ultima linie in fiier se va afia 8 (deoarece coloanele 1, 2 i 4 conin cel puin dou elemente
pare).
Subiectul 19
Un ir de caractere s se numete ablon pentru un alt ir de caractere x, dac este format din
caractere din mulimea {*, ?,#}, are aceeai lungime cu x i pe fiecare poziie din s n care apare * n x
se gsete o vocal, pe fiecare poziie din s n care apare # n x se gsete o consoan i pe fiecare
poziie din s n care apare ? putem avea orice caracter n x. Se consider vocal orice liter din
mulimea {a,e,i,o,u}.
a) Se citesc din fiierul Cuvinte.in dou iruri de caractere, de aceeai lungime, formate din cel
mult 200 de litere mici ale alfabetului englez. irurile se gsesc n fier fiecare pe cte o linie.
Afiai pe ecran, un ablon comun celor dou iruri citite, care conine un numr minim de
caractere ?.
b) Verificai dac unul din cuvintele citite este anagrama celuilalt i afiai pe ecran mesajul DA
n caz afirmativ sau NU n caz contrar.
Subiectul 20
Se consider un arbore cu rdcin i n vrfuri (n din N, 2 < n < 100), dat prin vectorul de tai.
Vrfurile sunt etichetate cu numere consecutive i distincte: 1, 2, 3, .. , n. Fiierul atestat.in conine 2
linii. Pe prima linie a fiierului este scris numrul n, reprezentnd numrul de vrfuri, iar pe a doua
linie sunt scrise n numere, separate prin spatiu, reprezentnd valorile consecutive ale vectorului de
"tai".
a) S se scrie pe prima linie n fiierul atestat.out etichetele tuturor frunzelor arborelui.
b) Pe urmtoarele linii ale fiierului atestat.out s se scrie fiecare nod neterminal mpreun cu
numrul descendenilor direci (cte un nod cu numrul fiilor si pe cte un rnd). Se va utiliza
un subprogram fii cu trei parametrii n (numrul de vrfuri), t (vectorul de tai) i k (eticheta
unui vrf). Subprogramul returneaz numrul tuturor descendenilor direci ai vrfului cu
eticheta k.
Probleme propuse de prof. Kalmar Violeta i prof. Moldovan Rodica Colegiul Naional Gheorghe
incai, Baia Mare
Problemele 7, 12, 16, 17, 20 sunt propuse de prof. Belbe Maria i prof. Contra Diana Colegiul
Naional Gheorghe incai, Baia Mare