P. 1
Teorie Informatica

Teorie Informatica

|Views: 901|Likes:
Published by Fadil Parastie

More info:

Published by: Fadil Parastie on May 09, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/30/2013

pdf

text

original

Autor:Stanciu Alexandra Clasa a X-a C

1

..atunci tabloul este bidimensional sau matrice. 1.care are asociat un nume Pentru a avea acces la continutul componentelor unui tablou se foloseste pozitia elementelor din tablou(indicele). Vectori 4 12 2 9 0 5 34 23 1 7 4 0 11 17 exemplu de vector • Adresare:v[x] v[1]=4 (primul element) v[2]=12 (al doilea element) v[3]=2 (al treilea element) ... v[14]=17(al paisprezecelea element) 2 ..atunci tabloul este multidimensional...TABLOURI • Caractere generale Un tablou este o multime finita si ordonata de elemente de acelasi tip..iar daca sunt accesate dupa mai multi indici.. Indicele trebuie sa fie de un tip ordinal Tipul comun al elementelor de baza poate fi oricare din tipurile de baza sau structurate In cazul in care componentele unui tablou sunt accesate dupa un singur indice..atunci tabloul este unidimensional sau vector..daca sunt accesate dupa 2 indici.

• Declarare type vector=array[1.pentru a calcula anumite sume. type vector=array[1. n.• Utilizare Vectorii se utilizeaza. var a:vector. readln(a[i]). end..100] of integer. for i:=1 to n do write(a[i]. begin write(‘n=’). type vector=array[1. for i:=1 to n do begin write(‘a[‘. var v:vector. n-nr de elemente • Program citire+afisare program citire_afisare. readln... 3 .’ ‘). • Program suma si produsul tuturor elementelor program suma_produs.’]=’). readln(n).pentru aranja in ordine crescatoare anumiti termeni sau pentru ecuatii care ar putea fi mai greu de rezolvat folosind alte programe. end.i.i:integer.100] of integer.in special.100] of tip_de_date.

for i:=1 to n do begin write(‘v[‘. end. writeln(‘Produsul nr este’ . • Program in care se maresc cu 1 nr div cu 3 program divizibil. readln(n).’]=’). readln(v[i]). n. writeln(‘Suma nr este’ . s:=0. end. n. for i:=1 to n do write(v[i]. for i:=1 to n do begin write(‘a[‘.’ ‘). readln(n). end.s. p:=1.’]=’). s). for i:=1 to n do p:=p*v[i].100] of integer. p).i.i. readln(a[i]). 4 .i. begin write(‘n=’).i:integer.var v:vector.p:integer. begin write(‘n=’). var a:vector.. for i:=1 to n do s:=s+v[i]. readln. type vector=array[1.

5 . for i:=1 to n do if v[i] mod 3=0 then v[i]:=v[i]+1.. for i:=1 to n do write(a[i]. readln. • Program in care se numara nr poz si cele neg program numarare. end.i. np:=0. readln.np:integer. for i:=1 to n do begin if v[i]<0 then nn:=nn+1. for i:=1 to n do begin write(‘a[‘.np.100] of integer. write(‘Sunt’ .for i:=1 to n do write(a[i].i. ’nr poz’).’]=’). type vector=array[1. begin write(‘n=’). nn:=0. end. end. readln(n). n. var a:vector. readln(a[i]).nn.’ ‘). end.’ ‘). if v[i]>0 then np:=np+1. ’nr neg si’ .nn.

• Program in care sa se calculeze S=a[1]+. s:=0. write(‘b[‘.+a[n]/b[1]+. for i:=1 to n do s:=s+(a[i]/b[i]). for i:=1 to n do begin write(‘a[‘. type vector=array[1. readln(b[i]). s).+b[n] program suma. write(‘Suma este’ .100] of integer.i. begin write(‘n=’).. n.b:vector.’]=’). 6 . for i:=1 to n do write(a[i].. for i:=1 to n do write)b[i]. end.. end.’ ‘).’ ‘). s:real. readln. readln(n). var a.i.i:integer..’]=’). readln(a[i])..

' '). readln(a[i]).i. type vector=array[1. inv:boolean. a[i]:=a[i+1]. repeat inv:=false.']='). until not inv.2.n. for i:=1 to n do begin write('a['. end.. i. Sortari a)Sortarea prin metoda bulelor Secventa de program program sortarebule. readln(n). end. 7 . x:=a[i]. readln.100] of integer. for i:=1 to n-1 do if a[i]>a[i+1] then begin inv:=true. var a:vector.x:integer. begin write('n='). end. for i:=1 to n do write(a[i]. a[i+1]:=x.

min.100] of integer.poarta numele de Bubble Sort sau Metoda Bulelor. var a:vector i. readln(n). Se repeta parcurgerea vectorului cu interschimbul elementelor care nu respecta relatia de ordine pana cand se ajunge la o parcurgere fara interschimb.iar cele mari spre dreapta.toate valorile mai mari.Prin ordonare.Trecerea vectorului de la configuratia initiala la configuratia finala se face prin compararea elementelor invecinate si schimbarea pozitiei lor astfel incat valorile mici sa se deplaseze spre stanga.i.n.x..']=').Metoda Ordonarea datelor prin interschimb si “miscarea” lor spre stanga sau dreapta.k. b)Sortare prin metoda minimului Secventa de program program sortaremin..j:integer. for i:=1 to n do begin write('a['. for i:=1 to n-1 do 8 . begin write('n='). type vector= array[1.iar la dreapta sa. end.asemenea unor bule. readln(a[i]).elementele si-au schimbat pozitia astfel incat la stanga oricarui element se afla toate valorile mai mici decat el.

for i:=1 to n do write(a[i].' ').i.In functie de el. for j:=i+1 to n do if a[j]<min then begin min:=a[j].n. c)Cautare binara Secventa de program program cautare_binara.st. a[k]:=x. gasit:boolean. type vector=array[1. end. if k<>i then begin x:=a[i]. end. 9 . end.begin min:=a[i].mij:integer.50] of integer. k:=j. readln. var v:vector. nr.. a[i]:=a[k].se ordoneaza celelalte elemente din vector in ordine crescatoare. end.dr. k:=i. Metoda Se stabileste un minim:presupunem ca minimul este primul element.

Write('Elementul cautat in vector: '). dr:=n. st:=1.i. end.nr. readln(nr). if (gasit) then writeln('Numarul '.' nu se afla in vector'). readln(v[i]). end.prin care domeniul de valori in care se cauta 10 .mij) else writeln('Numarul '. for i:=1 to n do begin write('v['. end.' se afla in vector pe pozitia: '. while (not gasit) and (st<dr) do begin mij:=(st+dr) div 2. gasit:=false. readln(n).begin writeln('n='). end. if nr=v[mij] then gasit:=true else begin if nr<v[mij] then dr:=mij-1 else st:=mij+1. readln.']=').nr. Metoda Cautarea binara este o metoda care reduce mult mai mult complexitatea operatiei de cautare a unei valori intr-un tablou ordonat.

11 .c:vector.cautarea la dreapa sau la stanga o vom face la fel.b. begin write('m=').i.solutia unei probleme este redus pas cu pas pana la gasirea solutiei.']=').readln(m).Problema initiala.k. end.anume cel din mijlocul tabloului:daca valoarea cautata este mai mare decat a elementului din mijloc.']='). write('n='). k:=1.a intervalului de valori in care se face cautarea.este descompusa in probleme de acelasi fel.x.astfel vom cauta la stanga lui..n. var a. readln(b[i]). end. i:=1. type vector= array[1. readln(a[i]). d)Interclasarea Secventa de program program interclasare. j:=1.se compara valoarea cu valoarea unui element reper.m:integer. Initial.pana la un singur element.i.cautarea unei valori intr-un tablou ordonat.y.readln(n).alegand ca reper elementul din mijloc. i.20] of integer. for i:=1 to m do begin write('a['.prin reducerea.dar din ce in ce mai simple.e clar ca il vom cauta printre elementele aflate la dreapta acestuia. for i:=1 to n do begin write('b['.j.

end else begin c[k]:=b[j].while (i<=m) and (j<=n) do begin if a[i]<b[j] then begin c[k]:=a[i]. end. if i<=m then for x:=i to m do begin c[k]:=a[x]. readln. j:=j+1. end.se obtine un tablou nou ce contine fiecare dintre valorile celor doua 12 . i:=i+1. end. end. k:=k+1.pornind de la doua tablouri de date ordonate dupa acelasi criteriu. for i:=1 to n do write(c[i].' '). end. k:=k+1. if j<=n then for y:=j to n do begin c[k]:=a[y]. k:=k+1. Metoda Interclasarea este rationamentul prin care.

2]=11 a[1... Matrice 2 3 44 5 6 7 11 2 45 0 7 8 16 23 9 87 21 54 0 6 34 8 1 23 13 28 65 33 21 17 exemplu de matrice • Adresare:a[linie. a[6...ordonate dupa acelasi criteriu....3]=16 . • Declarare 13 .5]=17 • Utilizare Folosirea unei matrice este importanta datorita faptului ca putem asocia anumitor elemente corespondentii respectivi acestora si.......Pentru realizarea interclasarii sunt necesare urmatoarele: -capacitatea celor doua tablouri de valori -nr de valori(n) din primul tablou -n valori ordonate crescator -numarul de valori(m) din cel de-al doilea tablou -m valori ordonate crescator -valorile tabloului rezultat prin interclasare 3.coloana] a[1..rezultatele vor fi mai usor de obtinut si mai usor de “intretinut”.1]=2 a[1.tablouri..astfel..

Altfel.1.nu avem diagonala secundara. var a:matrice 80-nr maxim de linii 100-nr maxim de coloane • Diagonala principala Daca matricea este patratica(m=n) (m=nr.unde i=1. readln(n). write('n=').50. • Program citire+afisare program matrice.j.80. readln(m).n:integer.type matrice=array[1. coloane) .1.m.nu avem diagonala principala.. begin write('m=')..'..i]. 14 .']=').100] of integer/char.atunci diagonala principala este formata din elementele a[i.atunci diagonala secundara este formata din elementele a[i. • Diagonala secundara Daca matricea este patratica(m=n). for i:=1 to m do for j:= 1 to n do begin write('a['. linii.n-i+1]. i.50] of integer’ var a:matrice..'.j. Altfel.i.n. type matrice= array[1. n=nr.

15 . end.s. for i:=1 to m do for j:= 1 to n do begin write('a['. end. write(‘l=’). writeln.1.j.p:integer. write('n='). readln(a[i.50] of integer’ var a:matrice. readln.. begin write('m=').j.readln(a[i.j].m. for i:=1 to m do begin for j:=1 to n do write(a[i.' ').j]).i.'.j].' ').l. writeln. type matrice= array[1. write(‘k=’).j]).'. for i:=1 to m do begin for j:=1 to n do write(a[i.readln(m). end..']='). readln(k).50. i.readln(n).n.k. end. • Program in care sa se afiseze suma nr de pe linia k si produsul nr de pe coloana l program suma_produs. end.

' '). writeln(‘suma pe linia’..'. for i:=1 to m do p:=p*a[i. • Program in care sa se calculeze suma elem pare si produsul elem imp de pe diag princ a unei matrice patratice program diag_princ. writeln(‘Prod pe coloana’. end. type matrice= array[1. for i:=1 to n do 16 . p:=1.j].i]. s). writeln.']=').j]).j.j. i. p).1.'.n.s. k.. for i:=1 to n do s:=s+a[k. begin write('n='). end.l]. for i:=1 to n do begin for j:=1 to n do write(a[i.p:integer. readln(a[i. end.50. readln.i. s:=0. p:=1. readln(n). l.50] of integer’ var a:matrice.readln(l).’este.’este’. for i:=1 to n do for j:= 1 to n do begin write('a['. s:=0.

'. 17 .s. i.1.'. s:=0..50. readln. for i:=1 to n do for j:= 1 to n do begin write('a['.. end.p).' '). end. write(‘Suma este ‘. end.']='). writeln.j]. end.s:integer. type matrice= array[1.i. • Program in care sa se calculeze suma elementelor de deasupra diagonalei secundare a unei matrice patratice program matrice. write(‘Suma elem de pe diag princ este ‘. for i:=1 to n-1 do for j:=1 to n-i do s:=s+a[i. readln.i].s). readln(a[i. readln(n).50] of integer’ var a:matrice.j.i] mod 2=0 then s:=s+a[i.j].if a[i.j. begin write('n=').i] else p:=p*a[i.n. ‘iar prod elem este ‘. for i:=1 to n do begin for j:=1 to n do write(a[i.j]).

readln(c). write(‘d=’). readln(n).sae se interschimbe linia c cu linia d.j].x. if x mod 2 =0 then begin for i:=1 to n do 18 .j.' ').sa se interschimbe coloana c cu coloana d.m. readln(a[i. for i:=1 to m do begin for j:=1 to n do write(a[i.i. i.• Program in care se citeste o variabila x. readln(d).. readln(m).y.1.d. readln(x). write(‘c=’).. end.50] of integer’ var a:matrice. program matrice.iar daca x este impar.z:integer. write('n='). end.j]).'. write(‘x=’).'. begin write('m='). for i:=1 to m do for j:= 1 to n do begin write('a['.n.Daca x este par. writeln.']=').c. type matrice= array[1.50.j.

end.c]:=a[i.d]:=z. a[i.begin y:=a[c.i]. readln. a[d. a[i. end.c]. 19 . end else begin for i:=1 to m do begin z:=a[i. end.d].i]:=a[d. a[c.i]:=y.i].

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->