0% au considerat acest document util (0 voturi)
38 vizualizări3 pagini

Vectori 1

Documentul prezintă noțiuni de bază despre tablouri unidimensionale (vectori), inclusiv definire, declarare, citire, afișare, determinarea elementului minim/maxim, verificarea unor proprietăți ale elementelor vectorului și căutarea unui element într-un vector. Sunt prezentate și exemple de probleme care implică operații cu vectori, cum ar fi verificarea dacă toate elementele sunt numere prime, determinarea celei mai lungi secvențe de elemente egale etc.
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
38 vizualizări3 pagini

Vectori 1

Documentul prezintă noțiuni de bază despre tablouri unidimensionale (vectori), inclusiv definire, declarare, citire, afișare, determinarea elementului minim/maxim, verificarea unor proprietăți ale elementelor vectorului și căutarea unui element într-un vector. Sunt prezentate și exemple de probleme care implică operații cu vectori, cum ar fi verificarea dacă toate elementele sunt numere prime, determinarea celei mai lungi secvențe de elemente egale etc.
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 3

Aplicaii tipuri structurate.

Tablouri unidimensionale (vectori)


Definire, declarare, prelucrri elementare Un tablou este o colecie de date de acelai tip, memorate ntr-o zon de memorie contigu, reunite sub un nume comun. Declararea unei variabile de tip tablou: tip_dat nume[nr_elemente ! "#emple: int a[$% ! &loat b['% ! c(ar c[) ! *bservaie: nr_elemente este o constant ntreag ce speci&ic numrul de elemente ale vectorului! precizarea valorii sale se poate &ace i printr-o constant simbolic, de e#emplu: const int D+,-'%%! int a[D+, ! .ccesul la un element al tabloului se poate &ace pe baza indicelui acelui element /numerotarea ncepe de la %0. De e#emplu, elementele tabloului c declarat mai sus sunt c[% , c[' , c[$ , c[1 , c[2 . Un ast&el de tablou, pentru care la declarare este speci&icat o singur dimensiune, iar poziia unui element este speci&icat utiliz3nd un singur indice, se numete tablou unidimensional sau vector. 4itirea unui vector se realizeaz ca n e#emplul de mai 5os:
int a[100],n,i; cin>>n; for(i=0;i<n; i++) cin>>a[i];

.&iarea unui vector:


for(i=0;i<n; i++) cout<<a[i]<<' ';

Determinarea elementului minim6ma#im dintr-un vector:


int minim; for(i=1;i<n; i++) if (a[i]<minim) minim=a[i];

Verificarea unei proprieti 7e nt3lnim deseori cu probleme n care trebuie s veri&icm dac toate elementele unui vector au o anumit proprietate, sau dac e#ist n vector un element care are o anumit proprietate. 4oncret, iat cele dou situaii prezentate separat: a. 8e consider un vector cu n elemente numere naturale /n9'%%0. 8 se veri&ice dac toate elementele vectorului sunt numere pare. :om &olosi o variabil ntreag, numit ok, care va avea valoarea ' dac toate elementele vectorului sunt numere pare i % n caz contrar. ;resupunem iniial c toate elementele vectorului sunt numere pare /ok=10! parcurgem vectorul i dac gsim un element impar, vom atribui variabilei ok valoarea %.

unsigned int a[100]; ... ok=1; for (i=0;i<n && ok;i++) if (a[i] !"=0) ok=0;

b. 8e consider un vector cu n elemente numere ntregi /n9'%%0. 8 se veri&ice dac e#ist n vector un element negativ. :om &olosi o variabil ntreag numit gasit, creia i vom atribui valoarea iniial % /adic presupunem c toate elementele sunt pozitive0. ;arcurgem vectorul i dac gsim un element negativ, vom atribui variabilei gasit valoarea '.
int a[100]; ... gasit=0; for(i=0;i<n && "gasit; i++) if (a[i]<0) gasit=1;

Cutarea unui element ntr-un vector 8e consider un vector cu n componente ntregi /n9'%%0 i o valoare ntreag #. 8 se veri&ice dac # apare sau nu n vector. *bservm c este o situaie similar celei prezentate anterior la punctul b, adic va trebui s veri&icm dac e#ist n vector un element egal cu valoarea #. .ceast metod de cutare, n care testm succesiv elementele vectorului, se numete cutare secvenial. <recvent apar probleme de cutare a unui element ntr-o mulime ordonat. =n aceast situaie, comparm valoarea # cu elementul din mi5locul vectorului i avem urmtoarele posibiliti: - # este egal cu elementul din mi5loc, deci am terminat cutarea - # este mai mic dec3t elementul din mi5loc, deci vom continua cutarea n prima 5umtate a vectorului - # este mai mare dec3t elementul din mi5loc, deci vom continua cutarea n a doua 5umtate a vectorului .ceast metod de cutare, n care lucrm prin n5umtiri succesive, se numete cutare binar. .lgoritmul de cutare binar este urmtorul:
st=0; dr=n#1; gasit=0; $%i&e ("gasit && st<=dr) 'mi(=(st+dr))!; if (a[mi(]==*) gasit=1; e&se if (a[mi(]>*) dr=mi(#1; e&se st=mi(+1;+ if (gasit) cout<<*<<, se gaseste -e -o.itia /<<mi(; e&se cout<<*<<, nu se af&a in 0ector,;

iblio!rafie ". 4erc(ez, ,. 8erban - ;rogramarea n limba5ul 464>>. :olumul +. "ditura ;olirom ". 4erc(ez ?+n&ormatica, 4ulegere de probleme pentru liceu. "ditura ;olirom

"#$ %&'& "#$"()& '. <ie a un vector cu n/n9)%0 componente de tip int. a. :eri&icai dac toate elementele vectorului a sunt numere prime. b. :eri&icai dac e#ist n vectorul a un palindrom. c. Determinai cea mai lung secven &ormat din elemente egale e#istent n vector. .&iai lungimea secvenei, poziia de nceput i valoarea care se repet. $. <iierul @numere.inA conine pe prima linie un numr natural n9$)), iar pe a doua linie n numere naturale mai mici sau egale cu $)). 8 se construiasc &iierul @numere.outA care s conin: a. pe primele n linii reprezentrile n baza $ ale numerelor din &iierul @numere.inA b. pe r3ndurile urmtoare, grupele de numere cu proprietatea c orice dou numere ale aceleiai grupe au n reprezentarea binar un numr egal de ci&re de '. 7umerele din aceeai grup se vor a&ia pe acelai r3nd cu spaiu ntre ele. "#emplu: numere.in numere.out B '%%' C D )1 ) ') 1 '%%% ''%'%' '%' '''' '' )1 ') C)1 D 1. petrol (ttp:66campion.edu.ro6ar(iva6inde#.p(pEpage-problemFaction-vieGFid-'2' 2. <ie un tablou unidimensional cu n elemente valori naturale. 8 se determine o submulime de elemente din tablou, pentru care suma elementelor este divizibil cu n. "#emplu: pentru n-H i a-/1,B,2,$,'',),'',B0 se va a&ia /B,2,$,'',)0 ). 8e consider un vector a cu n /n9'%%0 componente numere ntregi. 8 se tearg din vectorul a un numr minim de elemente ast&el nc3t la &inal s se obin un ir strict cresctor de elemente. ;rimul element din vectorul iniial nu se va terge. "#emplu: pentru n-H i a-/1,2,D,2,$,',C0 se va a&ia /1,2,D,C0 B. roci (ttp:66campion.edu.ro6ar(iva6inde#.p(pEpage-problemFaction-vieGFid-'2% H. livada' (ttp:66campion.edu.ro6ar(iva6inde#.p(pEpage-problemFaction-vieGFid-'%D1

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