Sunteți pe pagina 1din 23

3.

Fiiere

1. Scriei un program care citete de la tastatur un De exemplu, dac n=4


numr natural nenul n (n20) i construiete fiierul fiierul are coninutul:
stelute.txt astfel nct acesta s conin pe *
prima linie un caracter *, pe a doua linie dou **
caractere *, , pe a na linie n caractere *, pe linia ***
n+1, n-1 caractere *, pe linia n+2, n-2 caractere *, ****
***
, iar pe linia 2n-1 un caracter *.
**
*

2. Scriei programul C/C++ care citete de la tastatur un numr natural


n(0<n<100) i creaz fiierul text BAC.TXT care conine pe prima linie, n
ordine descresctoare, toate numerele naturale de la n la 1, pe a doua linie n
ordine descresctoare, toate numerele naturale de la n-1 la 1 etc... pe linia n-1
numerele 2 1, iar pe ultima linie numrul 1. Pe fiecare linie numerele vor fi
desprite prin cte un spaiu.
Exemplu: dac se citete n=3, atunci BAC.TXT va conine:
3 2 1
2 1
1

3. Scriei programul Pascal/C/C++ care citete de la tastatur un numr natural


n(0<n<100) i creeaz fiierul text BAC.TXT care conine pe prima linie
numrul 1, pe a doua linie numerele 2 1 , pe a treia linie, n ordine
descresctoare, numerele 3 2 1 etc., pe ultima linie, n ordine descresctoare,
toate numerele naturale de la n la 1. Pe fiecare linie numerele vor fi desprite
prin cte un spaiu.
De exemplu, dac se citete n=3, atunci BAC.TXT va conine:
1
2 1
3 2 1

4. Scriei programul Pascal/C/C++ care, pentru o valoare n (numr natural,


1<=n<=100) citit de la tastatur, scrie n fiierul bac.txt, separate prin spaiu,
primele n numere strict pozitive divizibile cu 3.
De exemplu, pentru n=4, coninutul fiierului este : 3 6 9 12

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. Scriei programul Pascal/C/C++ care citete din fiierul BAC.TXT un ir s de


cel mult un milion de numere naturale, fiecare numr avnd cel mult patru cifre,
i care determin n mod eficient din punctul de vedere al timpului de executare
i al spaiului de memorie folosit, numrul de componente ale irului obinut prin
eliminarea din cele dou extremiti ale lui s a unui numr minim de
componente, astfel nct irul rezultat s nceap i s se termine cu cte un
numr par. Fiierul BAC.TXT conine cel puin un numr par iar numerele din
fiier sunt separate printr-un singur spaiu. Programul va afia pe ecran numrul
de componente ale irului obinut.
De exemplu, dac fiierul BAC.TXT conine numerele:
1 245 22 67 34 29 345 8 354 11 7 34 12 45 39 41 26 67 89 1011

se va afia pe ecran numrul: 15, deoarece sunt eliminate numerele


subliniate iar irul rezultat este format din 15 numere.

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

16. n fiierul bac.txt pe aceeai linie, desprite printr-un spaiu, se gsesc


maximum 1000 de numere ntregi. Scriei un program care s determine
maximul i minimul numerelor din fiier folosind o metod eficient din punct de
vedere al memoriei i al numrului de operaii efectuate i afieaz pe ecran
valoarea maximului i a minimului.
Exemplu: Dac n fiierul bac.txt se gsesc numerele 100 34 1 78 90
123 0 67 8 -90 -899 -9 88 se va afia max=123 i min=-899.

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.

19. Se citete de la tastatur un numr natural n (0<n<100). Scriei programul


Pascal/C/C++ ce construiete fiierul prime.out cu primele n numere
prime, n ordine cresctoare, separate prin cte un spaiu.
Exemplu: Pentru n=8, fiierul prime.out conine: 2 3 5 7 11 13 17
19

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

24. Pentru un numr natural n citit de a tastatur (0<n<100) se cere s se


construiasc un vector cu n componente numere naturale din mulimea {0, 1,
2} astfel nct s nu existe dou elemente egale alturate i suma oricror 3
elemente consecutive s fie egal cu 3. Scriei programul Pascal care
genereaz n memorie vectorul i apoi scrie n fiierul text VECT.TXT
componentele vectorului, n ordine, de la prima pn la ultima, cu spaii ntre
orice dou elemente consecutive.
De exemplu, pentru n=4, fiierul VECT.TXT poate s conin valorile 1 2 0 1

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

30. Se citete de la tastaur un numr natural nenul n (n<1000). Scriei programul


PASCAL/C/C++ care construiete fiierul text bac.txt care s conin, pe

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).

40. Pe prima linie a fiierului NUMERE.TXT se afl un numr natural n (0<n<10000)


iar pe urmtoarea linie exact n valori naturale de cel mult 2 cifre fiecare,
desprite prin cte un spaiu.
a) Scriei programul Pascal/C/C++ care citete din fiier numrul n i apoi cele

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.

b) Descriei pe scurt metoda folosit explicnd eficiena acesteia(3-4 rnduri)

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

b) Descriei metoda utilizat i explicai n ce const eficiena ei.

42. Pe prima linie a fiierului text NUMERE.TXT se afl o valoare natural n


(0<n100), iar pe urmtoarea linie se afl exact n valori naturale distincte de
cel mult 4 cifre fiecare, valori desprite prin cte un spaiu.
Scriei programul Pascal care afieaz pe ecran toate numerele prime de pe
a doua linie a fiierului NUMERE.TXT, n ordine cresctoare a valorilor lor.
Numerele vor fi afiate pe o singur linie separate prin cte un spaiu.
Dac fiierul NUMERE.TXT are urmtorul coninut se afieaz pe ecran
11 2 3 5 7 31
2 18 31 9 4 5 7 81 22 64 3

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)

44. Din fiierul bac.in se citete de pe prima linie un numr natural n


(0<n<5000), iar de pe linia a doua se citesc n numere naturale, fiecare
avnd cel mult patru cifre. n fiier numerele sunt separate prin cte un
spaiu.
a) Se cere s se aleag un algoritm eficient pentru determinarea valorilor
distincte i s se descrie n 3-4 rnduri algoritmul justificndu-se eficiena sa;
b) Scriei programul Pascal/C/C++ ce realizeaz prelucrarea descris la
punctul a. Valorile distincte determinate se scriu, cu spaiu ntre ele, n
fiierul bac.out.

45. Prima linie a fiierului BAC.TXT conine dou numere naturale m i n


(1<=n,m<=100) iar urmtoarele m linii cte n numere ntregi cu maxim 4
cifre fiecare, separate prin cte un spaiu. Se cere s se afieze pe ecran
cte din cele m linii din fiier sunt simetrice. Spunem c o linie a fiierului
este simetric dac elementele egal deprtate de capetele liniei respective
sunt egale (primul element de pe linie este egal cu ultimul element al liniei, al
doilea cu penultimul etc.)
De exemplu dac fiierul BAC.TXT are urmtorul coninut
3 5
15 3 0 3 15
5 9 1 9 5
6 8 20 8 3
atunci se va afia pe ecran valoarea 2 (primele dou din cele m linii sunt
simetrice).

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).

a) Descriei folosind limbajul natural o metod eficient de rezolvare i justificai


eficiena acesteia (cel mult 6 rnduri).

b) Scriei programul Pascal/C/C++ corespunztor metodei descrise la a).

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.

49. Fiierul numere.in conine pe prima linie un numr natural n (0<n<100000),


iar pe a doua linie n numere reale separate prin cte un spaiu. Fiecare numr
real este format din cel mult 10 cifre, inclusiv partea zecimal. Scriei
programul Pascal/C/C++ ce determin cifrele ce nu apar n scrierea nici unui
numr real din fiier. Cifrele se vor afia pe ecran n ordine cresctoare,
separate prin cte un spaiu. n cazul n care toate cifrele sunt utilizate n
scrierea numerelor din fiier se va afia pe ecran mesajul NICI UNA.
Exemplu: Dac fiierul conine pe prima linie numrul 4 i pe a doua linie
numerele: -1.23 36 22.57 208 atunci se va afia 4 9.

50. n fiierul numere.txt, se afl memorate, pe prima linie, dou numere


naturale, n i m desprite de un spaiu (1n10000 i mn), iar pe urmtoarea

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.

De exemplu dac fiierul SERBARE.TXT are urmtorul coninut:


5 3
20 2
20 3
30 2
20 1
10 1
atunci pe ecran se va afia 2 1 3 deoarece tipul 2 de uniform este purtat de
50 de copii, tipul 1 de 30 de copii, iar tipul 3 de 20 de copii.

52. Se citete un numr n natural, 2<n<10000 de la tastatur. S se scrie un


program PASCAL/C/C++ care creeaz fiierul text BAC.TXT i scrie n el, pe
aceeai linie, cu separare prin spaiu, primele n cifre din irul
1,2,3,4,5,6,7,8,9,1,2,3,...Cifrele i cu i<9 sunt consecutive, iar
dup fiecare cifr de 9 urmeaz cifra 1.
De exemplu, dac pentru n se citete valoarea 15, atunci fiierul va conine, n
aceast ordine, valorile: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 .

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.

Matricea va fi afiat n fiierul text BAC.TXT, numerele de pe aceeai linie


fiind separate printr-un spaiu.

De exemplu, pentru n=4 , coninutul fiierului BAC.TXT va fi:


1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3

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.

56. Pentru o valoare n (numr natural, 1<=n<=100)


citit de la tastatur scriei programul Pascal/C
care scrie n fiierul bac.txt un tablou
bidimensional cu n linii i n coloane cu formatul
alturat. Elementele de pe fiecare linie sunt
separate prin spaiu.
De exemplu, pentru n=4, coninutul fiierului EMBED PBrush
bac.txt este:

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.

58. O matrice ptrat este mprit de cele dou diagonale


n patru zone notate A, B, C, D, conform figurii
alturate. Elementele de pe cele 2 diagonale nu aparin
nici uneia dintre cele 4 zone. Scriei un program Pascal
care citete de la tastatur un numr
natural n (n<=20)i formeaz n memorie o matrice ptrat cu n linii i n
coloane, n care elementele de pe cele dou diagonale sunt egale cu 1,
elementele care aparin zonelor A i B sunt egale cu 2, iar elementele care
aparin zonelor C i D sunt egale cu 3. Elementele matricei vor fi scrise in
fiierul bac.out, cte o linie a matricei pe cte o linie a fiierului cu spaii
ntre elementele fiecrei linii.

De exemplu pentru n=5 fiierul bac.out va conine: 1 2 2 2 1


3 1 2 1 3
3 3 1 3 3
3 1 2 1 3
1 2 2 2 1

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.

Exemplu: dac n fiierul MATRICE.IN este


memorat matricea din figura alturat i se
citesc de la tastatur valorile i=3, j=2, k=6
i l=6, colurile ramei vor avea indicii (3,2)
i (6,6).
Se va afia suma: 68.

62. Scriei programul Pascal/C/C++ care citete de la tastatur un ir de cel mult 30

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

63. Scriei programul Pascal/C/C++ care citete de la tastatur un ir de cel mult 30


de litere ale alfabetului englez i creeaz fiierul text BAC.TXT ce conine irul
de caractere dat i toate sufixele acestuia de lungime cel puin 1, fiecare pe
cte o linie, n ordinea cresctoare a lungimii sufixelor, aliniate la stnga. De
exemplu, dac se citete irul teste, atunci BAC.TXT va conine:
e
te
ste
este
teste

64. Scriei programul Pascal/C/C++ care citete de la tastatur un ir s de cel mult


30 de caractere i un caracter c; programul determin dublarea fiecrei apariii a
caracterului c n s i scrie noul ir obinut n fiierul text BAC.TXT.
De exemplu, dac se citete irul: alfabetar i caracterul a atunci fiierul
BAC.TXT va conine irul: aalfaabetaar.

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

66. Fiierul text BAC.TXT conine prenumele elevilor unei BAC.TXT


clase, cte un prenume (ir de maximum 20 de
caractere) pe o linie a fiierului. Scriei un program eficient Elena
care afieaz pe ecran numrul de caractere ale celui mai Gheorghe
lung prenume precum i numrul prenumelor avnd Andreea
aceast lungime. Maria
De exemplu pentru fiierul alturat valorile afiate sunt 8 Vasilica
2 (Gheorghe i Vasilica au 8 caractere).

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.

69. Se citete de la tastatur un numr natural n de cel mult 8 cifre. S se creeze


fiierul text NR.TXT care s conin, cte unul pe linie, n orice ordine, toate
numerele naturale distincte care se pot obine din valoarea lui n prin
eliminarea uneia sau mai multor cifre de la unul din capetele sale.
De exemplu, pentru n=38604, fiierul NR.TXT va conine, cte unul pe linie i
nu neaprat n aceast ordine: 8604 604 4 3860 386 38 3

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

75. Scriei un program Pascal/C/C++ care citete de la tastatur 4 iruri de caractere


formate din litere mici. S se creeze fiierul BAC.TXT n care s se scrie toate
perechile de iruri dintre cele citite, perechi de forma x,y n care irul x este
subsecven a irului y sau irul y este subsecven a irului x. Fiecare pereche
determinat se va scrie n fiierul BAC.TXT pe cte un rnd separate printr-o
virgul. Dac nu exist nici o astfel de pereche, n fiierul BAC.TXT se va scrie
textul FR SOLUIE.
Exemplu. Se citesc: ari
calculator
mari
lat
Se afieaz n BAC.TXT: ari,mari
calculator,lat

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.

77. Scriei programul Pascal/C/C++ care citete de la tastatur un ir cu maximum


255 de caractere format numai din litere mici i mari ale alfabetului englez i l
scrie n fiierul bac.out codificat conform urmtoarei reguli: dac numrul de
vocale (a,e,i,o,u,A,E,I,O,U) din ir este mai mare sau egal cu numrul de
consoane din ir, fiecare vocal se va nlocui cu caracterul urmtor din alfabetul
englez, altfel fiecare consoan se va nlocui cu caracterul precedent din
alfabetul englez. De exemplu, pentru irul bacalaureat, fiierul va conine
irul bbcblbvrfbt deoarece irul iniial are 6 vocale i 5 consoane; pentru
irul basca, fiierul va conine irul aarba deoarece irul iniial are 2 vocale
i 3 consoane.

78. Fiierul fisier.txt conine pe prima linie un numr natural 5


nenul, n, i pe fiecare dintre urmtoarele n linii cte un singur tabac
cuvnt format din cel mult 20 de litere mici ale alfabetului laureat
tabacar

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.

79. Se consider fiierul text Cuvinte.in ce conine pe prima linie un numr


natural nenul n (n<=100) iar pe urmtoarele n linii cte un cuvnt cu
maximum 10 caractere. S se afieze pe ecran cuvintele din fiierul dat care
sunt palindroame. n cazul n care nu exist nici un cuvnt palindrom se va afia
mesajul NU. Un cuvnt este palindrom dac citindu-l de la dreapta la stnga
sau de la stnga la dreapta se obine acelai cuvnt.
De exemplu dac fiierul Cuvinte.in are urmtorul coninut:
3
sas
creion
Ion
atunci se va afia pe ecran : sas

80. Subprogramul ordonare primete prin intermediul parametrilor c1, c2 i c3,


trei cuvinte de maximum 30 de caractere fiecare i afieaz aceste trei cuvinte
n ordine lexicografic, desprite prin cte un spaiu.
a) Scriei definiia complet a subprogramului ordonare.
b) Fiierul cuvinte.in conine pe fiecare linie cte trei cuvinte desprite prin
cte un spaiu. Scriei programul care citete din fiier, de pe fiecare rnd al su
cte trei cuvinte i folosind apeluri ale subprogramului ordonare le afieaz n
ordine lexicografic pe cte un rnd de ecran.
Exemplu:
Fiierul cuvinte.in conine: Pe ecran se va afia :
ariadna are examen are ariadna examen
azi e soare azi e soare
maine va ploua maine ploua va
examenul e usor e examenul usor
succes elevilor participanti elevilor participanti succes

81. n fiierul puncte.txt sunt memorate coordonatele carteziene a n puncte din


plan. Pe prima linie a fiierului se afl n (numr natural n100) iar apoi, pe
urmtoarele linii ale fiierului, cte dou numere naturale desprite prin cte un
spaiu, reprezentnd abscisa i ordonata unui punct din plan. n acest plan de
reprezentare se deseneaz ptratul determinat de punctele: P1 de coordonate
(10,20), reprezentnd colul din stnga sus i punctul P2 de coordonate
(20,10), reprezentnd colul din dreapta jos al ptratului. Scriei programul
PASCAL/C/C++ care citete din fiierul puncte.txt datele existente i
afieaz pe ecran coordonatele acelor puncte din fiier, care se afl n interiorul

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