Referat, comentariu, eseu, proiect, lucrare bacalaureat, liceu si facultate
Top referateAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
TABLOURI UNIDIMENSIONALE
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 

Structura de date este o colectie de date inzestrata cu informatii structurale care permit identificarea si selectia componentelor. r6r10rk
Componentele unei structuri de date pot fi identificate si selectate fie prin numele, fie prin intermediul relatiilor structurale. Cea mai simpla relatie structurala este pozitia fiecarei componente in cadrul structurii.
Asupra unei structuri de date se pot aplica mai multe tipuri de operatii :vizualizarea elementelor structurii sub diferite forme, actualizarea(adaugarea, modificarea sau stergerea unei componente), imbogatirea structurala(prin adaugarea unor informatii de legatura) sortare(aranjarea componentelor intr-o anumita ordine stabilita de un anumit criteriu de ordonare.
Din punct de vedere al continutului, structurile pot fi:
-omogene(toate componentele structurii sunt de acelasi tip)
-neomogene(componentele structurii sunt de tipuri diferite) in functie de modul in care sunt memorate structurile de date se impart in doua mari categorii:
-Structuri interne, sunt create in memoria interna RAM a sistemului, si au un caracter temporar, datorita faptului ca memoria interna este volatila.
-Structuri externe, sunt depozitate pe un suport de memorie externa (hard-disk.floppy-disk), avand astfel un caracter permanent.
TABLOURI
Un sir de elemente de acelasi tip, in care conteaza ordinea elementelor, se numeste vector sau tablou unidimensional.
Un tablou(array) este o structura formata dintr-un numar fixat de componente de acelasi tip, numit tip de baza. Numarul de componente este determinat de numarul de valori ale indicilor, care sunt obligatoriu tipuri ordinale. Pozitia unui element se mai numeste si indicele sau rangul elementului, iar elementele se mai numesc si componente ale vectorului. Sintaxa declararii tipului tablou este : type_nume=arrayatip_ordinal1,......tip_ordinalni of tip_oarecare unde: n-reprezinta dimensiunea tabloului tip_ordinal1,...tip_ordinaln reprezinta tipul indicilor tabloului tip_oarecare reprezinta tipul componentelor tabloului
!Obervatii.In cazul in care tip_ordinal este unul din tipurile intregi,este obligatoriu sa folosim subdomeniile lui
Exemplu: type vector=arraya1..100i of integer; var v:vector; variabila v este un tablou de dimensiune 1 cu 100 componente intregi identificate prin indici din subdomeniul 1..100.
Aici tipul ordinal este subdomeniu al tipului integer, iar tipul oarecare este ineger. Componentele unui tablou sunt memorate pe zone de memorii consecutive. Adresarea unei componente a tabloului se face prin indice (o valoare a tipului ordinal) care se specifica dupa numele tabloului, intre paranteze drepte.
Tipul tablou arrayatip_ordinali of tip poate ramane si anonim. Astfel, putem scrie ceva de genul type vector=array ...si var x:vector pe scurt prin var x:array...Adica, tipul tablou ramane anonim, nu trebuie neaparat sa primeasca un nume(aici cel de vector). tip_ordinal si tip pot fi atat tipuri anonime, cat si identifictori de tip.
Limbajul Turbo Pascal nu ne permite sa declaram o variabila de tip array cu un numar variabil de componente. De multe ori nu stim cate componente vor fi necesare pentru o anumita rulare a programului. Orice problema in care se lucreaza cu variabila de tip array si in care se cere prelucrare a n componente constituie un exemplu in acest sens .In acest caz ideea este sa rezervam un numar maxim de componente, atat cat este necesar pentru rulare atunci cand n este maxim. la fiecare rulare a programului se cere numarul de componente. De cele mai multe ori o parte dintre cele rezervate raman neutilizate.
Prin declararea unui vector vom intelege numarul maxim de elementele acestuia. Numarul elementelor efective folosite, care difera de la o executie la alta se numeste numar real (efectiv de elemente).
"Vizualizarea" tuturor elementelor pe rand si prelucrare acestora se numeste parcurgere. Parcurgerea intr-un ciclu pozitiile elementelor din vector i=1,2,3,...,n si pentru fiecare valoare a lui i, "vizitam" si prelucram elementul vaii, adica elementul aflat pe pozitia i: secventa de program for i:=1 to n d0
<prelucrarea vaii urmarirea ciclului pas cu pas
Pasul 1:i:=1,prelucreza va1i
Pasul 2:i:=2,prelucreza va2i
------------------------------------ Pasul n:i:=n,prelucreza vani
OPERATII CU VECTORI
O variabila de tip tablou nu poate fi citita sau scrisa in intregime. In Turbo Pascal7.0 Se pot face atribuiri intre variabile de acelasi tablou. Dar, e preferabil sa se lucreze pe componente .Cu componentele unui tablou Se pot face toate operatiile ce Se pot face cu orice variabila de acel tip (afisare, citire, atribuire etc)
1.citirea unui vector
Aceasta inseamna citirea numarului n de componente, intr-un ciclu for, de pilda. De fapt avem de citit componenta numarului i, cu i de la 1 la n. Deci putem scrie: for i:= 1 to n do begin
write('dati xa',x,'i='); readln(xaii); end;
2.Srierea unui vector cand trebuie sa afisam vectorul, adica toate componentele sale efective numarul acestora este cunoscut. Afisarea se realizeaza ciclic si poate fi astfel:
-fiecare element pe un rand(folosita mai ales cand avem vectori si siruri de caractere) for i:1to n do
writeln(xaii);
-toate elementele pe acelasi rand, despartite de virgula si/sau spatii(in cazul valorilor numerice) for i:=1 to n do
write(xaii,',');
writeln;
3.inversarea unui vector in alt vector vom inversa vectorul x in vectorul y, de acelasi tip cu x, deci vom pune in componenta ya1i pe xani,in componenta ya2i pe xan-1i...,im componenta yani pe xa1i for i :=1 to n do yaii:=xan+1-ii
4.inversarea unui vector in el insasi
Va trebui sa schimbam prima componenta cu ultima,pe a doua cu penultima s.a.m.d.,pana la mijloc vom intelege n div 2 indiferent daca n este par sau impar.Asadar,va trebui sa parcurgem vectorul pana la n div 2 intershimband pe xaii cu xan+1-ii; for i:=1 to n do div 2 do begin aux:=xAii; xaii:=x an+1-ii; xan+1-ii:=aux; end;
5.determinarea elementului minim dintr-un vector
Aceasta problema se rezolva astfel:consideram minim primul element,apoi parcurgem restul vectorului si,ori de cate ori gasim un element mai mic actualizam minimul la valoarea acelui element minim:=xa1i for i:=2 to n do if xaii<xa1i then minim:=xaii;
In acest moment,la sfarsitul ciclului,variabila minim(de acelasi tip ca si componentele x) contine cel mai mic element din vector
6.determinarea elementului maxim dintr-un vector
Se actualizeaza maximul intr-o variabila max.Algoritmul este asemanator cu cel de minim.Initializam maximul cu primul element.Parcurgem intr-un ciclu pozitiile celorlalte elemente i pentru fiecare element vaii,daca va1i mai mic decat vaii,atunci vaii devine noul maxim.
7.determinarea simultana a minimului si maximului dintr-un vector
Pentru a realiza aceste lucruri simultan se procedeaza dupa cum urmeaza: minim:=xa1i;maxim:=xa1i; for i:= 2 to n do begin if xaii<minim then minim:=xaii if xaii>maxim then maxim:=xaii end;
Evident daca vectorul contine doar un singur element acela va fi si maxim si minim
8.insumarea componentelor unui vector de numere
Suma componentelor unui vector se calculeaza ca orice suma,se pleaca cu suma nula,apoi la fiecare pas i (i de la 1 la n),suma creste cu elementul curent,care este xaii. suma:=0; for i:= 1 to n do suma:=suma+xaii;
9.Afisarea elementelor pare dintr-un vectorde numere intregi. sa consideram var x:=arrayA1..20i of integer,si var n,i:integer.Vom parcurge vectorul si vom afisa doar numerele pare: for i:=1 to n do if not odd(xaii) then
writeln(xaii)
10.afisarea elementelor impare de pe pozitii pareale unui vector de intregi
Vectorul are componentele intregi.Consideram aceleasi variabile ca si la problema anterioara.Daca spunem pozitie trebuie sa ne gandimla indice,iar dac spunem element trebuie sa ne gandim la elementul de pe pozitia i,deci la xaii.Asadar va trebui sa avem not odd )i)si oddxaii for i:=1 to ndo if (not oddaii) and odd(xaii)
writeln(xaii)
11.numararea elementelor negative si a celor pozitive dintr-un vector de numere.
Fie NN Si NP cele doua numere.Acestea se comporta ca doua contoare,initial nule,De fiecare data cand gasim in sirul de numere un element negativ se incrementeazaNN,NN:=NN+1,altfel NP.
NN=0;NP=0; for i:=1to n do if xaii<0 then inc(NN) else inc(NP);
writeln('Exista',NN,'elemente negative');
writeln('Exista,'NP',elemente pozitive');
12cautare secventiala a unui element intr-un vector
Aceasta problema necesita pentru a putea fi reolvata si o parcurgere a vectorului de la prima pozitie pana la sfarsit sau pana s-a gasit elementul cautat.Gasirea elementului cautat este marcat de o variabila logica gasit,pozitionata initial pe fals.Fie x vectorul,iar a elementul cautat gasit:=false; i:=1
while(i:=n) and (not gasit) do if xaii:=a then gasit:=true else inc(i)
12.inserarea unui element dintr-un vector. sa inseram,pe poozitia p intr-un vector,un element nou m.Pentru aceasta vom deplasa elementele de pe pozitiile de la p la n,unde n ete numarul de elemente ale vectorului,cu o pozitie mai incolo spre dreapta.Deplasare se vaface de la pozitia ultima inspre pozitia p.In final vom pune elementul m pe pozitia p.Fireste numarul de elemnte ale vectorului vor creste cu o unitate:n:=n+1 for i:=n+1 downto p+1 do xaii:=xai-1i; xapi:=m; n:=n=1;
Ordonare vectorilor
Metoda selectiei directe.
Consideram ca avem un vector de elemente comparabile intre ele, sa ordonam crescator elementele vectorului. Metoda este urmatoarea il punem pe cel mai mai in fata ,apoi procedam la fel cu restul elementelor .Aceasta metoda se implementeaza astfel: vom compara pe xa1i cu toate elementele de dupa el. Daca gasim un element xaji care e mai mic decat xa1i,atunci interschimbam pe xa1i cu xaji .Cand am ajuns la ultimul element inseamna ca pe prima pozitie va fi sigur cel mai mic element din vector(noul xa1i) in continuare, ne ocupam doar de elementele de pe pozitia doi incolo si vom parcurge vectorul pana la xani ca si in primul caz. Aceste traversari ale vectorului ,insotite de eventualile interschimbari au loc pana la penultima pozitie, cand mai are loc doar o singura comparare, intre xan-1i si xani
Metoda bubble-sort se compara fiecare element xaii cu elementul de pe pozitia succesoare, deci cu elementul xai+1i.Daca elementele nu sunt puse in ordine crescatoare, se vor schimba intre ele. Procesul se repeta pana cand la o traversare a lui x nu mai are loc nici o interschimbare
Sortare prin numarare
Pentru fiecare element din vector se numara cate elemente mai mici decat el exista in vector. program ordonare alfabetica; var x:arraya1..20i of string; i,j,n:integer;aux:string; begin
write ('cati elevi sunt?='); readln(n) ; for i:=1 to n do; begin
write('nume elev x ',i,':'); readln(xaii); end; for i:=1 to n-1 do for j:=i+1 to n do if xaii<xaji then begin aux:=xaii;xaii:=xaji;xaji:=aux; end;
writeln ('ordinea alfabetica este:'); for i:= 1 to n do writeln(i,'',xaii); readln; end.
Interclasarea a doi vectori
Presupunem ca dispunem de doi vectori( eventual de dimensiuni diferite) ordonati, sa obtinem vectorul reuniune ordonat. Fie a si b doi vectori, iar in vectorul c sa punem rezultatul. Vom proceda in felul urmator
1 vom compara primul element din vectorul a cu primul element din vectorul b si pe cel mai mic il vom pune in c, eliminandu-l din vectorul de unde provine;
2 procesul se repeta pana cand se epuizeaza unul din vectori;
3 Se copiaza la sfarsitul lui c toate elementele din vectorul ramas neterminat, care fireste vor fi deja ordonate, cat si mai mari ca ultimul element din vectorul care s-a epuizat primul.
Cautare binara
Cautarea binara se foloseste pentru a determina existenta unui element intr-un vector. Daca elementele vectorului sunt deja ordonate crescator sau descrescator, atunci procesul cautarii poate deveni mai rapid, daca se aplica cautarea binara .
Se compara elementul cauta cu elementul din mijloc si, daca ele nu coincid, se va trece la cautare doar in acea jumatate a vectorului in care in mod logic, elementul cautat s-ar putea gasi, in stanga sau in dreapta, dupa cum elementul din mijloc este mai mare sau mai mic decat elementul cautat s.a.m.d. pana cand domeniul in care trebuie sa mai caute sa terminat.





Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui referat, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza referatul:
In prezent referatul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite referat | Harta site | Adauga in favorite
Colt dreapta