Sunteți pe pagina 1din 2

EFICIENA ALGORITMILOR

1. Fiierul text NUMERE. TXT conine pe prima linie un num r natural n (1n10000) i pe a
doua linie, n numere naturale cu cel mult 9 cifre fiecare, numere nu neap rat distincte. Aceste
numere sunt dispuse n ordine cresctoare i separate ntre ele prin cte un spaiu.
a) Scriei un program Pascal/ C++ care citete valorile din fiier i, printr-o metod eficient
din punct de vedere al timpului de executare i al spaiului de memorie utilizat, afieaz pe
ecran, cu un spaiu ntre ele, valoarea care apare de cele mai multe ori n fiier i de cte ori
apare ea. Dac exist mai multe valori care apar de un num r maxim de ori, se va afia cea
mai mic dintre ele. (6p)
Exemplu: dac fiierul
8
NUMERE.TXT are
711 711 711 11111 11111 11111 191111 231111
coninutul al turat,
atunci programul va afia
pe ecran
711 3
b) Des riei li

aj atural

etoda utilizat i expli ai

e o st efi ie a ei. (4p)

2. Se numete "num r mare" un num r care are mai mult de 9 cifre.


a) Scriei un program Pascal/C++ care citete din fiierul text NUMERE.IN un num r natural
n (10<n<l000) apoi de pe urm toarea linie n cifre separate prin cte un spaiu, dintre
care cel puin una nenul i construiete n mod eficient cel mai mic "num r mare" cu
exact cele n cifre din fiier. Scriei n fiierul text NUMERE. OUT "num rul mare" obinut
astfel. (6p)
Exemplu: dac fiierul NUMERE.TXT are
coninutul :
10
7 9 4 0 9 0 1 1 8 8

NUMERE.OUT:
1001478899

b) Descrieti succint in limbaj natural metoda de rezolvare folosit explicnd n ce const eficiena
ei (3 - 4 rnduri). (4p)
3. Fiierul text numere.in conine pe mai multe rnduri cel mult 50000 de numere naturale
din intervalul nchis [0,99], numerele de pe acelai rnd fiind separate prin cte un spaiu.
Scriei un program Pascal/C++ care scrie n fiierul numere.out, n ordine descresc toare,
acele numere din fiier care sunt mai mari dect un num r natural k, citit de la tastatur ,
utiliznd un algoritm eficient din punct de vedere al timpul ui de executare. Dac un num r
apare de mai multe ori, i este mai mare dect k, se va scrie o singur dat . Numerele vor fi
scrise cte 10 pe fiecare linie (cu excepia ultimei linii care poate s conin mai puine valori),
separate prin cte un spaiu.
Exemplu: dac fiierul numere.in are coninutul :

numere.out:

15 8 99 15 1 37 1 24 2
iar k=7 atunci:

99 37 24 15 8

4. a) Fiierul text BAC.IN conine pe prima sa linie un num r natural


urm toarea linie n numere naturale din intervalul [1,100] separate prin
s se citeasc din fiier toate numerele i s se afieze pe ecran num
apar de cele mai multe ori printre numerele citite. Numerele afiate vor
spaiu. Alegei un algoritm de rezolvare eficient att din punctul de
executare ct i al gestion rii memoriei.(6p)

n (0<n<l0000), iar pe
cte un spaiu. Se cere
rul sau numerele care
fi separate prin cte un
vedere al timpului de

Exemplu: dac fiierul


12
BAC.IN are coninutul
1 2 2 3 2 9 3 3 9 9 7 1
al turat, atunci
programul vor afia pe
ecran valorile
2 3 9
b) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia (4-6 rnduri) (4p)
5. Fiierulbac.txt conineunirdecelmultunmiliondenumerenaturaledinintervalul [0,102],
separateprincteunspaiu. Seceres sedetermine toate perechile distincte formate din termeni
ai iruluiaflat nfiier,x i y (y-x2),astfel nct s nuexisteniciuntermenal iruluicares
aparin intervalului(x,y).Numereledinfiecareperechesuntafiatepecteolinieaecranului,
nordinestrictcresc toare,separateprintr-unspaiu,iardac nuexist nicioastfeldepereche,se
afieaz pe ecran mesajul NU EXIST . Pentru determinarea numerelor cerute utilizai un
algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dac fiierul conine numerele
5 9 0 8 10 11 12 13 15 14 6 7 40 10 0 0 5 41 95 7

atunci pe ecran se afieaz , nu neap ratnaceast ordine, perechile


0 5
15 40
41 95

a) Descrieinlimbajnaturalalgoritmulutilizat,justificndeficiena acestuia. (4p)


b) S riei progra ul Pascal/C/C++ orespu ztor algorit ului des ris. (6p)

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