Documente Academic
Documente Profesional
Documente Cultură
Fiiere
5. Fiierul bac.txt conine pe primul rnd un numr natural nenul n cu cel mult
cinci cifre i pe fiecare dintre urmtoarele n linii cte dou numere naturale a, b
(a<b) cu cel mult 3 cifre fiecare, separate printr-un spaiu, numere ce
reprezint capetele unui interval nchis. Se cere s se afieze pe ecran,
separate printr-un spaiu, dou numere x i y ce reprezint capetele intervalului
de intersecie a celor n intervale date. Dac intersecia lor este mulimea vid, se
121
va afia mesajul multime vida.
De exemplu, dac fiierul bac.txt conine: se afieaz
4 8 10
1 10
5 20
8 12
1 21
a) Alegei o metod de rezolvare care s utilizeze eficient spaiul de memorie,
descriind n limbaj natural metoda folosit i justificnd eficiena acesteia (cel
mult 6 rnduri)
b) Scriei programul Pascal/C/C++ corespunztor metodei descrise la punctul a)
8. Scriei un program care creeaz fiierul text bac.txt ce conine o linie unic
avnd n ordine descresctoare, toate numerele pare mai mici sau egale cu n,
unde n este un numr natural citit de la tastatur (n<1000). Numerele scrise n
fiier vor fi separate prin cte un spaiu. De exemplu, dac se citete n=11,
atunci bac.txt va conine: 10 8 6 4 2 0.
9. Fiierul numere.in conine pe mai multe linii cte dou valori numerice
naturale de maximum patru cifre fiecare, separate printr-un spaiu. S se scrie n
fiierul numere.out un numr egal de linii cu cel din fiierul numere.in, linii
care vor avea urmtorul coninut:
- prima linie din numere.out va conine cea mai mic valoare de pe prima linie
a fiierului numere.in urmat de media aritmetic a celor dou valori de pe
prima linie a fiierului numere.in urmat de cea mai mare dintre cele dou
valori aflate pe prima linie a fiierului numere.in ; ntre aceste trei valori se va
lsa un spaiu, iar media aritmetic va fi afiat cu exact o zecimal;
- a doua linie din numere.out va conine cea mai mic valoare de pe a doua
linie a fiierului numere.in urmat de media aritmetic a celor dou valori de
pe a doua linie a fiierului numere.in urmat de cea mai mare dintre cele
dou valori aflate pe a doua linie a fiierului numere.in ; ntre aceste trei valori
se va lsa un spaiu, iar media aritmetic va fi afiat cu exact o zecimal etc.
Exemplu:
numere.in numere.out
2 7 2 4.5 7
200 300 200 250.0 300
1001 1000 1000 1000.5 1001
5 5 5 5.0 5
10. Fiierul text BAC.IN are urmtoarea structur: pe prima linie se gsete un
numr natural n (2n1.000.000), iar pe a doua linie se gsesc n numere
ntregi formate din cel mult 9 cifre i desprite prin spaiu. tiind c fiierul
BAC.IN conine ntotdeauna cel puin dou numere distincte printre cele n aflate
pe cea de-a doua linie, scriei un program care s creeze mai nti fiierul text
122
BAC.OUT i apoi s scrie n el, pe prima linie, separate printr-un spaiu i n
ordine descresctoare, cele mai mari dou valori distincte din fiierul BAC.IN.
Alegei o metod eficient de rezolvare att ca timp de executare, ct
i ca gestionare a memoriei.
Exemplu:
BAC.IN BAC.OUT
10 11 8
5 11 7 3 8 -2 11 11 -7 5
11. Pe prima linie a fiierului text BAC.TXT se afl un numr natural nenul n format
din maximum 6 cifre, iar pe a doua linie a fiierului se afl un ir format din n
numere naturale nenule, desprite prin spaii, fiecare numr fiind format din cel
mult 4 cifre. S se afieze lungimea maxim a unei secvene strict cresctoare
din irul dat. O secven a unui ir const n elemente aflate pe poziii
consecutive n irul considerat. Alegei o metod eficient de rezolvare
att ca timp de executare, ct i ca gestionare a memoriei.
Dac, de exemplu, fiierul BAC.TXT are coninutul
10
7 22 13 10 31 41 6 2 10 18
atunci programul trebuie s afieze valoarea 3 deoarece n irul considerat
exist mai multe secvene care au proprietatea cerut, dar lungimea maxim a
unei astfel de secvene este 3.
12. Pe prima linie a fiierului text BAC.TXT se afl un numr natural nenul n
(2n<1000000), iar pe a doua linie a fiierului se afl un ir format din n
numere ntregi, desprite prin cte un spaiu, fiecare numr fiind format din cel
mult 4 cifre. tiind c n fiier exist cel puin un numr strict pozitiv, se cere s
se afieze lungimea maxim a unei secvene din ir care are proprietatea c
este format doar din valori strict pozitive. O secven a unui ir este
format dintr-unul sau mai multe elemente aflate pe poziii
consecutive. Alegei o metod eficient de rezolvare att ca timp de
executare, ct i ca gestionare a memoriei.
De exemplu, dac fiierul BAC.TXT are coninutul
10
7 22 -3 10 3 14 0 21 10 8
atunci programul trebuie s afieze pe ecran valoarea 3 deoarece n irul
considerat exist mai multe secvene care sunt formate doar din numere strict
pozitive, dar lungimea maxim a unei astfel de secvene este 3.
13. Pe prima linie a fiierului bac.txt se afl cel mult 1000 de numere ntregi de
maximum trei cifre fiecare, separate prin cte un spaiu. Scriei un program
care construiete fiierul cifre.txt astfel nct acesta s conin pe prima
linie, separate prin cte un spaiu, toate numerele de exact dou cifre din
fiierul bac.txt.
Exemplu: Dac n fiierul bac.txt se gsesc numerele:
100 34 1 78 90 123 0 67 8 -90 -899 -9 88
123
fiierul cifre.txt va conine numerele: 34 78 90 67 -90 88
14. Fiierul text BAC.TXT conine 100 de numere naturale de cel mult 6 cifre
fiecare, cte un numr pe fiecare linie a fiierului. Scriei un program care:
a) afieaz pe ecran toate numerele din fiier, cte 5 pe fiecare linie,
numerele de pe o linie fiind separate separate prin cte un spaiu;
b) afieaz pe ecran suma numerelor prime din fiier.
15. Fiierul DATE.IN conine cel mult 100000 numere naturale separate prin
spaii, fiecare numr avnd cel mult nou cifre. S se realizeze un program
Pascal/C/C++ care scrie n fiierul DATE.OUT, pe o singur linie, separate
prin cte un spaiu, toate numerele din DATE.IN care au prima cifra par.
Prima cifra a unui numr este cifra cea mai din stnga (adic cea mai
semnificativ cifr).
Exemplu: dac fiierul DATE.IN conine:
45 123 68 8 134 56 876 6666 2 5 123 65
fiierul DATE.OUT va avea urmtorul coninut: 45 68 8 876 6666 2 65
124
17. Se consider irul cresctor format din toate numerele naturale nenule, n
care fiecare numr apare de exact k ori. De exemplu, pentru k=3 termenii
irului sunt 1,1,1,2,2,2,3,3,3,4,4,4,5,5,5...
a) Scriei un program Pascal/C/C++ ce citete dou numere naturale, k i
n (1k100, 1n1000000000) i, utiliznd un algoritm eficient din punct
de vedere al spaiului de memorare i al timpului de executare, scrie n
fiierul BAC.TXT primii n termeni ai irului (separai prin cte un spaiu), n
ordine descresctoare.
Exemplu: pentru k=3 i n=10 n fiier se scriu n ordine, numerele:
4 3 3 3 2 2 2 1 1 1 (deoarece primii 10 termeni ai irului sunt
1,1,1,2,2,2,3,3,3,4)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const
eficiena ei.
18. Fiierul numere.in conine cel mult 1000 de numere ntregi separate prin
spaii. Numerele din fiier au valori cuprinse intre -30000 i 30000.
S se determine cel mai mare numr din fiier precum i numrul de apariii
ale acestuia.
Exemplu: dac fiierul conine numerele: 2 7 12 3 8 12 9 5 atunci
maximul este 12 i acesta apare de dou ori n fiier.
Alegei un algoritm eficient de rezolvare.
a) Explicai n limbaj natural metoda utilizat, justificnd eficiena ei (4-6
rnduri).
b) Scriei programul Pascal/C/C++ ce rezolv problema enunat i
afieaz pe ecran cele dou valori cerute. n rezolvarea problemei se va
utiliza metoda descris la punctul anterior.
20. Pe prima linie a fiierului text BAC.IN se afl un numr natural n (0 < n <=
1000), iar pe a doua linie n numere reale pozitive, desprite prin cte un spaiu.
Scriei programul Pascal care citete datele din fiierul de intrare i scrie n
fiierul text BAC.OUT pe o linie, desprite prin cte un spaiu, numerele care au
partea ntreag numr prim. Dac nici unul din numere nu are partea ntreag
numr prim atunci se va scrie n fiierul BAC.OUT mesajul NU EXISTA
De exemplu, dac BAC.IN conine
125
6
12.095 31.567 5.789 789.834 1234.923 2.345
atunci fiierul BAC.OUT va conine
31.567 5.789 2.345
21. n fiierul text NUMERE.IN, pe prima linie se afl trei numere naturale n, a i b
(0<n<=1000, a<b) separate prin cte un spaiu, iar pe linia a doua n numere
naturale desprite prin cte un spaiu. Scriei programul care citete datele din
fiierul NUMERE.IN i scrie n fiierul text NUMERE.OUT numerele de pe linia a
doua a fiierului de intrare care se gsesc n afara intervalului deschis (a,b).
Numerele vor fi scrise pe o singur linie n fiierului de ieire separate prin cte
un spaiu.
22. Fiierul text BAC.IN conine pe prima linie un numr natural n (0<n<=5000),
iar pe a doua linie n numere naturale de cel mult 9 cifre fiecare, separate prin
cte un spaiu. S se scrie un program care citete n, apoi cele n numere
naturale din fiierul BAC.IN i scrie n fiierul text BAC.OUT, pe cte o linie
fiecare, numerele de pe a doua linie a fiierului BAC.IN care au exact patru
cifre.
(10p.)
Exemplu:
BAC.IN BAC.OUT
6 1124
23 1124 567 89013 5586 1200 5586
1200
23. Din fiierul text BAC.IN se citete un numr natural n de cel mult 9 cifre. Scriei
un program Pascal care scrie n fiierul text BAC.OUT, pe o singur linie,
separai prin cte un singur spaiu, toi divizorii de trei cifre ai numrului n.
Dac numrul n nu are divizori formai din trei cifre, atunci se va scrie n fiier
mesajul NU EXISTA.
De exemplu pentru n = 1000 se va scrie n BAC.OUT 100 125 200 250 500
Iar pentru n = 12347 BAC.OUT va conine NU EXISTA
126
25. Prin seciune a unui ir V nelegem o succesiune de elemente ale lui V situate
pe poziii consecutive n irul dat. Dac n fiierul text bac.in se afl pe prima
linie un numr natural n(1<n<10000) iar pe linia urmtoare cele n componente
ntregi ale irului V, componente cu cel mult patru cifre fiecare, se cere s se
determine n mod eficient seciunea de sum minim. Se va afia pe ecran
numrul reprezentnd suma minim determinat.
a) Explicai n limbaj natural metoda utilizat, justificnd eficiena acesteia (4-5
rnduri).
b) Scriei programul corespunztor metodei descrise la punctul a).
De exemplu, dac fiierul bac.in conine:
6
-3 2 -3 -4 5 6
se va afia : -8
26. Fiierul numere.in conine mai multe numere naturale, mai mici dect 1000.
Acestea sunt scrise pe o singur linie i sunt separate prin spaiu. Scriei
programul Pascal/C/C++ ce afieaz pe ecran numrul de valori din fiier.
27. Se consider dou fiiere text F1.TXT i F2.TXT ce conin numere reale
dispuse pe mai multe linii i separate prin spaii. Fiierul F1.TXT conine numai
numere distincte, iar fiierul F2.TXT conine numai numere din fiierul F1.TXT,
dar acestea se pot repeta.
Scriei programul PASCAL/C/C++ care afieaz pentru fiecare valoare din
fiierul F1.TXT numrul su de apariii n fiierul F2.TXT. Pe linii diferite ale
ecranului vor fi afiate cte dou valori, separate prin spaiu, prima fiind numrul
din fiierul F1.TXT, iar a doua numrul su de apariii din F2.TXT.
28. n fiierul text BAC.TXT se afl mai multe valori numerice ntregi de cel mult
nou cifre dispuse pe mai multe linii i separate prin spaii. S se scrie
programul PASCAL/C/C++ care afieaz pe ecran cte valori din fiierul
BAC.TXT sunt situate strict ntre 100 i 10000.
29. Se citete de la tastatur un numr natural nenul n care are cel mult 9 cifre. S
se afieze n fiierul Date.out numrul k, natural, astfel nct produsul
1*2*3*...*(k-1)*k s aib o valoare ct mai apropiat de numrul n.
De exemplu, dac se citete numarul n=25 fiierul Date.out are urmtorul
coninut :
4
De exemplu dac se citete numrul n=119 fiierul Date.out are urmtorul
coninut :
5
127
prima linie, toi divizorii lui n n ordine strict descresctoare. Divizorii vor fi separai
prin spaiu.
De exemplu, dac n=10, atunci fiierul bac.txt va conine:
10 5 2 1
31. Se consider fiierul text date.in care conine exact 899 de numere distincte
formate fiecare din cte 3 cifre. S se afieze n fiierul text date.out numrul
format din 3 cifre care lipsete din fiierul text date.in.
32. Fiierul bac.txt conine un ir de 20072 numere naturale cu cel mult dou
cifre fiecare. Se cere determinarea i afiarea pe ecran, n ordine cresctoare, a
valoriilor distincte din fiier.
Numerele sunt afiate cte 5 pe fiecare linie (cu excepia ultimei linii care poate
s conin mai puine valori) i sunt separate prin spaiu.
De exemplu, dac fiierul bac.txt are coninutul
3 3 7 22 82 7 56 15 3 56 7 22 82 15 7 23 82 82...82
atunci se va afia:
3 7 15 22 23
56 82
a) Alegei o metod eficient de rezolvare, descriind n limbaj natural metoda
folosit i explicai eficiena acesteia ( cel mult 6 rnduri)
b) Scriei programul Pascal/C corespunztor metodei descrise la punctul a)
33. Un ir cresctor de fracii ireductibile din intervalul [0,1], cu numitorul mai mic
sau egal cu n, se numete ir Farey de ordin n, notat Fn. irurile Farey de ordin
1, 2 i 5 conin elementele:
1
0 1 0 1 1 0 1 1 , 2 1
F1 ={ , } ; F2={ , , } ,, F5= { , , , 3 , ,
1 1 1 2 1 1 5 4 5 2
3 2 3 4 1}
, , , ,
5 3 4 5 1
Dac notm o astfel de serie de valori cu: x0/y0, x1/y1, , xi/yi, atunci
valorile care apar ntr-un ir Farey se pot calcula cu urmtoarele relaii:
x0=0,y0=1,x1=1,y1=n,
xi+2=[(yi+n)/yi+1]xi+1-xi, yi+2=[(yi+n)/yi+1]yi+1-yi,
n care s-a notat cu [a] partea ntreag a lui a.
Scriei un program Pascal/C/C++ care citete de la tastatur un numr natural n
(1n50) i apoi creeaz fiierul text numere.txt care conine pe fiecare linie,
separate prin spaiu, numrtorul i numitorul unei fracii din irul Farey de
ordinul n.
De exemplu pentru n=2, coninutul fiierului numere.txt va fi:
128
0 1
1 2
1 1
34. Prin asocierea fiecrei litere mici din alfabetul englez cu un numr egal cu
poziia literei n alfabet, se poate codifica orice secven de litere mici cu o
secven de numere. Scriei un program Pascal care citete din fiierul text
cod.txt un numr n (0<n<30000) i, de pe rndul urmtor, o secven de n
de litere mici. Folosind un algoritm eficient din punctul de vedere al gestionrii
memoriei, programul va codifica secvena de caractere citit i va scrie pe ecran
numerele asociate, separate prin spaii.
Exemplu: pentru fiierul cod.txt: 7
bacinfo
se vor afia pe ecran, n ordine, numerele:
2 1 3 9 14 6 15. (10p.)
35. Fiierul text BAC.TXT conine o singur linie pe care este scris o expresie
aritmetic fr paranteze, n care operanzii sunt cifre, iar operatorii sunt + sau .
La sfritul expresiei, n fiier, se afl caracterul =. Expresia are cel mult 30 de
operanzi i este corect (primul i ultimul caracter din expresie sunt cifre, ntre
dou cifre exist exact un operator, nu exist dou cifre una lng alta i nu
conine alte caractere). Scriei programul Pascal/C/C++ care citete din fiierul
text BAC.TXT expresia aritmetic i determin n mod eficient, din punctul de
vedere al spaiului de memorie folosit, rezultatul evalurii acesteia. Programul va
afia pe ecran att expresia ct i rezultatul evalurii, pe o singur linie, sub
forma: expresie = rezultat (ca n exemplu).
De exemplu, dac fiierul BAC.TXT conine: 2+34+6+8-5= atunci
rezultatul evalurii expresiei este 10, afindu-se pe ecran n forma:
2+3-4+6+8-5 = 10
36. V_89_III_3. Se consider fiierul DATE.IN care conine cel mult 100000 de
numere naturale formate fiecare din cel mult opt cifre, separate prin cte un
spaiu. Scriei un program Pascal/C/C++ care scrie n fiierul DATE.OUT o
valoare care reprezint numrul de cifre care NU au aprut n niciunul din
numerele aflate n fiierul DATE.IN.
Exemple:
DATE.IN DATE.OUT
12 222 12 21 87 6 89 788 3 900 2
Explicaii:
-sunt dou cifre care nu au aprut n scrierea numerelor din fiierul DATE.IN. i
anume 4 i 5.
37. Fie x1,x2,,xn un ir format din n (n1) numere naturale nenule distincte.
Spunem c irul x1, x2,,xn este o creast dac exist un indice p (1<p<n)
astfel nct x1<x2<...<xp-1<xp i xp>xp+1>...>xn-1>xn, iar numrul aflat pe
129
poziia p (adic xp) se numete vrful crestei.
Fiierul text BAC.IN conine pe prima linie un numr natural n cuprins ntre 1 i
100, iar pe a doua linie conine n numere naturale nenule distincte mai mici sau
egale dect 5000, desprite prin spaii. Scriei un program care s creeze un
fiier text BAC.OUT n care s scrie, pe prima linie, numrul 0 dac cele n
numere aflate pe a doua linie a fiierului BAC.IN nu formeaz o creast sau
numrul care reprezint vrful crestei, n caz contrar.
Exemple:
BAC.IN BAC.OUT BAC.IN BAC.OUT
6 26 6 0
7 12 17 26 15 7 12 17 10
3 15 3
38. Fiierul text BAC.IN conine, pe mai multe linii, cel mult 30000 de numere
naturale nenule mai mici sau egale dect 500, desprite prin spaii. Scriei un
program care s creeze un fiier text BAC.OUT n care va scrie fiecare valoare
distinct din fiierul BAC.IN, precum i numrul su de apariii. Fiecare pereche
cerut va fi scris n fiierul indicat pe cte o linie, sub forma
(valoare_distinct,numr_apariii), n ordinea cresctoare a valorilor
distincte gsite. Alegei o metod eficient de rezolvare ca timp de
executare. Fiierul BAC.IN va conine ntotdeauna cel puin un numr.
Exemple:
BAC.IN BAC.OUT
7 22 7 6 (6,3)
10 10 6 (7,2)
22 6 10 22 10 (10,4)
(22,3)
39. Pe prima linie a fiierului BAC.TXT se gsesc numere naturale separate prin
cte un spaiu. Ele formeaz mai multe iruri cresctoare de numere naturale,
sfritul fiecrui ir fiind marcat de valoarea -1 (care nu face parte din nici un
ir). tiind c valorile numerelor din iruri nu depesc, n valoare absolut,
10000 i c in total sunt cel mult 2000 de numere, scriei un program care s
afieze numerele comune tuturor irurilor, n ordinea cresctoare a valorilor lor.
De exemplu, dac fiierul conine:
2 3 3 4 5 8 9 -1 2 4 5 8 11 -1 2 3 5 8 12 -1
atunci se va afia: 2 5 8
a) Descriei n limbaj natural o metod eficient de rezolvare ca timp de
executare.
b) Scriei programul Pascal/C/C++ corespunztor metodei descrise la
punctul a).
130
n numere i afieaz pe ecran, desprite prin cte un spaiu numrul sau
numerele care apar de cele mai multe ori pe linia a doua a fiierului. Se va
utiliza un algoritm eficient (ca timp de executare i gestionare a memoriei). De
exemplu, dac fiierul NUMERE.TXT are urmtorul coninut:
10
21 3 4 21 4 5 21 3 6 4
atunci programul va afia numerele 21 i 4, deoarece fiecare apare de cte 3
ori, iar celelalte numere apar de mai puin de 3 ori.
41. Fiierul BAC.TXT conine pe prima linie un numr natural cu exact 2000 de cifre
din mulimea {0,1,...,9}. Cifrele numrului nu sunt separate prin spaii.
a) Scriei un program C/C++ care afieaz pe ecran numrul cel mai mare care
se poate obine din cifrele numrului citit din fiierul BAC.TXT. Se va utiliza un
algoritm eficient din punct de vedere al timpului de executare.
Exemplu: dac fiierul conine numrul 2417400...0 se va afia
7442100...0
131
43. Fiierul numere.in conine pe prima linie un numr natural n (n<100) iar
pe a doua linie n numere mai mici dect 1000 separate printr-un spaiu.
Scriei programul Pascal/C/C++ ce determin cte elemente
situate pe a doua linie din fiier sunt egale cu partea ntreag a mediei lor
aritmetice.
Exemplu: Dac fiierul numere.in conine:
5
2 3 4 3 5
se va afia 2 (media aritmetica este 3.4 si exista 2 numere egale cu 3)
132
46. Scriei un program Pascal care citete de la tastatur un numr natural nenul k
(k<100) i din fiierul text BAC.TXT, de pe prima linie un numr natural nenul
n (k<n<100.000), iar de pe urmtoarea linie un ir S alctuit din n numere
ntregi formate din cel mult patru cifre fiecare, separate prin cte un spaiu;
programul va afia pe ecran valoarea maxim care poate fi obinut prin
nsumarea a k elemente aflate pe poziii consecutive n ir. De exemplu, dac
se citete k=5 de la tastatur, n=10 de pe prima linie a fiierului i numerele: -9
11 7 -19 2 14 5 -1 6 -2 de pe a doua linie, atunci se afieaz 26,
deoarece suma maxim care se poate obine prin adunarea a 5 valori aflate pe
poziii consecutive n ir este 26 (2+14+5+(-1)+6).
47. Scriei un program Pascal care citete de pe prima linie a fiierului text
BAC.TXT, cel mult 100 de numere naturale nenule formate din cel mult patru
cifre fiecare, separate prin spaii i afieaz pe ecran cifra care apare de cele
mai multe ori n scrierea numerelor citite. Dac exist mai multe cifre care apar
de cele mai multe ori, se vor afia toate acestea. De exemplu, dac din fiier se
citesc numerele: 90 73 109 1248 2771, atunci se afieaz 1,7 deoarece
fiecare dintre acestea apare de 3 ori.
48. n fiierul DATE.IN se gsesc cel mult 100000 de numere naturale de cel
mult 8 cifre fiecare scrise pe o singur linie i separate printr-un spaiu. Scriei
un program Pascal/C/C++ care pentu o cifr k citit de la tastatur, afieaz pe
ecran cte numere prime, n scrierea crora s-a folosit cifra k, se gsesc n
fiier.
Exemplu: dac fiierul conine numerele: 32 232 13 31 33 23 1111 19
200 5 23 iar pentru k se citete valoarea 3, programul va afia 4.
133
linie a fiierului, n numere reale desprite prin cte un spaiu. Scriei programul
care citete din fiier datele existente i afieaz pe cea de-a treia linie a
fiierului, suma obinut din cele mai mari m elemente negative citite din fiier. n
cazul n care fiierul nu conine cel puin m numere reale negative, se va afia
valoarea 0.
Exemplu :
numere.txt
6 3
-14.2 -7.5 -22.33 80 1.66 -3 Suma afiat n fiier va fi -24.7
51. La o serbare sunt n (0<n<21) grupe de copii care poart p (0<p<11) tipuri
de uniforme(numerotate de la 1 la p). Scriei un program PASCAL/C/C++ care s
afieze pe ecran tipurile de uniforme n ordinea descresctore a numrului total
de copii ce poart fiecare tip de uniform. Afiarea se va face pe o singur linie,
valorile fiind separate printr-un spaiu.
Datele de intrare se citesc din fiierul text SERBARE.TXT care are urmtoarea
structur: pe prima linie se afl valorile lui n, respectiv p, separate printr-un
spaiu, iar pe fiecare din urmtoarele n linii cte dou valori separate printr-un
spaiu ce reprezint numrul de copii dintr-o grup i respectiv tipul de uniform
pe care acetia l poart.
53. n fiierul text MAT.TXT se afl nxm (0<n<11,0<m<21) valori numerice ntregi
de cel mult nou cifre dispuse pe mai multe linii i separate prin spaii. S se
scrie programul PASCAL/C/C++ care construiete n memorie i afieaz pe
ecran tabloul cu n linii i m coloane ce se formeaz cu elementele din fiier astfel
nct ordinea tuturor elementelor din fiier s coincid cu parcurgerea tabloului
linie cu linie.
134
54. Scriei un program Pascal/C/C++ care citete de la tastatur un numr natural
n (2<n<=100) i construiete n memorie o matrice ptrat cu n linii i n
coloane n care prima linie conine, n ordine, numerele 1,2,3,...,n i
oricare alt linie este obinut prin permutarea circular ctre stnga cu o
poziie a numerelor de pe linia anterioar.
55. Fiierul DATE.IN conine cel mult 100000 numere naturale separate prin spaii,
fiecare numr cu maximum dou cifre.
S se realizeze un program Pascal/C/C++ care scrie n fiierul DATE.OUT
numrul numerelor din fiierul DATE.IN care apar exact o dat n fiier.
Exemplu: dac fiierul DATE.IN conine numerele:
45 13 12 2 5 23 65 13 13 13 13
fiierul DATE.OUT va avea urmtorul coninut: 6.
135
57. Fiierul matrice.txt conine pe primul rnd dou valori naturale m i n
(1n100, 1m100), reprezentnd numrul de linii i respectiv de coloane
ale unei matrice a, iar pe urmtoarele m linii cte n valori ntregi cu maximum 4
cifre fiecare, separate prin cte un spaiu, reprezentnd elementele matricei a.
Se cere s se afieze pe ecran un ir de 2*(n+m)-4 numere ordonate
cresctor, ir format din elementele aflate pe chenarul exterior al matricei a.
Chenarul exterior este format din prima linie, ultima linie, prima coloan i
ultima coloan. Alegei un algoritm de rezolvare eficient din punct de vedere al
gestionrii memoriei.
De exemplu, dac fiierul matrice.txt conine: 3 4
6 7 1 9
3 0 2 8
5 4 8 5
se va afia: 1 3 4 5 5 6 7 8 8 9
a) Descriei strategia de rezolvare i justificai eficiena algoritmului ales,
folosind limbajul natural (5-6 rnduri).
b) Scriei programul corespunztor.
59. Fiierele text f1.txt i f2.txt conin, fiecare, elementele a cte unui ir de
numere reale a, respectiv b. Fiierele conin maxim 100 de numere distincte
scrise pe o linie i separate printr-un singur spaiu. Scriei un program n
limbajul Pascal/C/C++ care citete cele dou iruri de numere din fiierele
f1.txt i f2.txt, i care scrie n fiierul f3.txt toate elementele comune
irurilor a i b, pe o linie i separate printr-un spaiu.
Exemplu: Dac coninutul fiierelor f1.txt i f2.txt este: 10.3 2.05 5
7.12, respectiv 67 7.12 5 3 7.33 9, atunci f3.txt va conine: 7.12 5
136
60. Fiierul bac.txt conine pe prima linie un numr natural N (2<N<20), iar
pe urmtoarele N linii, cte N valori ntregi, desprite prin spaii,
reprezentnd elementele unui tablou bidimensional, A. Numim
semidiagonal a tabloului mulimea elementelor aflate pe o direcie paralel
cu diagonala secundar a acestuia.
Scriei un program Pascal care citete din fiierul bac.txt numrul N i
elementele tabloului A i apoi citete de la tastatur dou valori naturale L i
C (1LN, 1CN). Programul va afia pe ecran suma elementelor aflate
pe semidiagonala ce conine elementul de pe linia L i coloana C. Se va
considera c liniile i coloanele tabloului sunt numerotate ncepnd cu 1.
Exemplu: dac fiierul bac.txt are coninutul 5
alturat, iar de la tastatur se citesc L=3 i C=4, 1 0 2 6 4
atunci se afieaz pe ecran valoarea 7 3 2 0 5 1
(reprezentnd suma elementelor evideniate: 1 9 4 2 3
7=1+2+0+4) 1 2 0 4 5
5 4 3 2 1
61. n fiierul MATRICE.IN se afl memorate elementele unei matrice (pe prima
linie se afl numerele n i m separate printr-un spaiu, care reprezint
numrul de linii, respectiv coloane ale matricei, iar pe urmtoarele n linii cte m
numere, separate prin cte un spaiu, reprezentnd elementele matricei). S se
calculeze suma elementelor matricei aflate pe rama dreptunghiular avnd
elementul din colul stnga-sus determinat de indicii i,j iar elementul din
colul dreapta-jos este determinat de indicii k,l, unde i,j,k i l sunt 4
numere naturale (1ikn i 1jlm). Rama cuprinde toate elementele
de pe liniile i i k, cuprinse ntre coloanele j i l inclusiv, precum i
elementele de pe coloanele j i l cuprinse ntre liniile i i k inclusiv.
Scriei un program PASCAL/C/C++ care citete din fiier dimensiunile matricei
i elementele sale, apoi de la tastatur patru valori pentru i,j,k,l,
calculeaz suma cerut i o afieaz pe ecran.
137
de litere ale alfabetului englez i creeaz fiierul text BAC.TXT ce conine irul
de caractere dat i toate prefixele acestuia de lungime cel puin 1, fiecare pe
cte o linie, n ordinea descresctoare a lungimii prefixelor. De exemplu, dac
se citete irul: proba, atunci BAC.TXT va conine:
proba
prob
pro
pr
p
65. Fiierul DATE.IN conine cel mult 1000 de caractere alfanumerice. Se citete
de la tastatur un cuvnt format din cel mult 50 de caractere alfanumerice. S
se scrie un program Pascal/C/C++ care afieaz pe ecran mesajul DA dac
toate caracterele din cuvntul citit se regsesc n fiier, fr a conta numrul
apariiilor lor sau ordinea n care apar i mesajul NU n caz contrar.
Exemplu: dac fiierul DATE.IN are urmtorul coninut
abc1a2bcdefgfgx7mnpo iar cuvntul citit este examen rspunsul afiat pe
ecran va fi DA
138
67. Pe prima linie a fiierului text BAC.TXT se gsete un cuvnt de exact 9
litere mici ale alfabetului englez. Pe a doua linie a fiierului se gsete o cifr
nenul k. Se cere s se scrie un program care afieaz pe ecran, de k ori, cel
de al k-lea caracter de pe prima linie a fiierului BAC.TXT.
De exemplu dac fiierul BAC.TXT are urmtorul coninut:
algoritmi
5
se va afia pe ecran:
rrrrr
68. Scriei programul Pascal/C/C++ care citete din fiierul text bac.txt un
cuvnt de cel mult 15 litere mici ale alfabetului englez i care scrie pe ecran
mesajul corect dac n cuvnt vocalele apar n ordine alfabetic (a, e,
i, o, u) i niciuna dintre ele nu se repet, iar n caz contrar scrie pe ecran
mesajul incorect.
De exemplu: dac din fiierul bac.txt se citete cuvntul tablou, pe ecran
se afieaz mesajul corect, dac din fiier se citete cuvntul interval
se scrie mesajul incorect pentru c vocalele nu apar n ordine alfabetic,
iar dac din acelai fiier se citete cuvntul exemplu se scrie mesajul
incorect pentru c vocala e apare de dou ori.
70. Scriei un program PascalC/C++ care citete din fiierul text BAC.TXT, cel
mult 100 de numere naturale aflate pe o singur linie, formate din cel mult
nou cifre fiecare, separate prin spaii i dintre acestea le afieaz pe ecran
doar pe acelea care au proprietatea de a fi palindrom. Dac nu se citesc
numere palindrom, se va afia pe ecran valoarea -1. Un numr are
proprietatea de a fi palindrom dac citit de la dreapta la stnga sau de la
stnga la dreapta are aceeai valoare. De exemplu 1221 este palindrom, n
timp ce 1210 nu este palindrom.
Exemplu: dac din fiierul BAC.TXT se citesc numerele: 7341 8228 660 2
80 131, atunci pe ecran se vor afia: 8228 2 131
71. Fiierul CUVINTE.IN are pe prima linie un numr natural n (0<n<1000) iar pe
urmtoarele n linii cte un cuvnt de cel mult 20 litere. S se scrie un program
care citete cuvintele din fiier i scrie n fiierul CUVINTE.OUT cuvintele citite,
n ordinea cresctoare a lungimii lor, cte un cuvnt pe o linie.
139
Exemplu
CUVINTE.IN CUVINTE.OUT
5 EXAMEN
EXAMEN LIMBAJ
LIMBAJ SCRISA
INFORMATICA INFORMATICA
SCRISA BACALAUREAT
BACALAUREAT
(10p.)
72. Fiierele text X.TXT i Y.TXT conin fiecare numele a 7 persoane, cte un
nume pe fiecare linie, fiecare nume avnd cel mult 15 litere. tiind c n fiecare
fiier numele sunt memorate n ordine alfabetic, scriei un program
Pascal/C/C++ care s citeasc din cele dou fiiere i s afieze pe ecran
toate numele din cele dou fiiere n ordine alfabetic, separate printr-un singur
spaiu.
Ex.:Daca fiierul X.TXT are coninutul : iar fiierul Y.TXT are coninutul :
Ana Angi
Dana Cora
Daniel Dora
Ene Horia
Mara Oana
Nae Paul
Paul Tibi
Se va afia pe ecran :
Ana Angi Cora Dana Daniel Dora Ene Horia Mara Nae Oana Paul Paul Tibi
73. Fiierul text cuvinte.in conine mai multe linii nevide de text, fiecare linie de
cel mult 255 de caractere. Orice linie este compus din unul sau mai multe
cuvinte separate prin cte un spaiu.
S se scrie un program care citete de la tastatur un numr natural L i scrie
n fiierul text cuvinte.out toate cuvintele de lungime L din fiierul de intrare,
n ordinea n care apar ele n text. Cuvintele vor fi scrise pe prima linie a
fiierului, separate prin cte un spaiu.
De exemplu pentru fiierul cuvinte.in de mai jos i L=4
A fost odat
Ca niciodat
O fata frumoas de mprat
Fiierul cuvinte.out va conine: fost fat
74. Fiierele text A.TXT i B.TXT conin fiecare vrsta a 7 persoane, cte un numr
natural care reprezint vrsta pe fiecare linie. tiind c n fiecare fiier vrstele
sunt memorate n ordine descresctoare, scriei un program Pascal/C/C++ care
s citeasc din cele dou fiiere i s scrie pe ecran toate vrstele din cele dou
fiiere n ordine descresctoare, separate printr-un singur spaiu.
Exemplu: Dac fiierul A.TXT are coninutul: iar fiierul B.TXT are coninutul:
83 79
76 75
60 72
140
40 45
30 30
21 25
17 18
se va afia : 83 79 76 75 72 60 45 40 30 30 25 21 18 17
76. Se consider un ir de cel mult 100 de litere mici ale alfabetului englez. Acest
ir este supus unui proces de eliminare, la fiecare etap eliminndu-se toate
secvenele formate din caractere identice situate pe poziii alturate. irul nou
obinut este supus aceluiai proces de eliminare pn cnd nu mai exist n ir
caractere alturate egale. Scriei programul Pascal/C/C++ care citete de la
tastatur irul i afieaz n fiierul DATE.TXT irul obinut dup ncheierea
ntregului proces de eliminare.
Exemplu:
Pentru irul teuuueusppi dup prima aplicare a procesului de eliminare se
obine irul teeusi, iar apoi irul tusi. Programul va afia n fiierul
DATE.TXT numai irul tusi, fr spaii ntre literele ce-l formeaz.
141
englez. S se scrie un program care citete valoarea n i apoi bacterie
determin cte dintre cele n cuvinte memorate n fiier conin barca
secvena bac. Programul va afia pe ecran numrul de cuvinte
determinat (0 n caz c nu exist niciunul).
Exemplu: pentru fiierul alturat se afieaz 3.
142
ptratului definit de punctele P1 i P2.
Exemplu:
puncte.txt Coordonatele punctelor aflate n interiorul ptratului sunt:
4 16 18
50 60 15 11
16 18
10 12
15 11
143