tablouri unidimensionale

of 66 /66
Tablouri Tablouri unidimensionale unidimensionale Algoritmi Algoritmi fundamentali fundamentali Realizat de Realizat de Carmen Rus Carmen Rus

Author: denim

Post on 12-Jan-2016

77 views

Category:

Documents


1 download

Embed Size (px)

DESCRIPTION

Tablouri unidimensionale. Algoritmi fundamentali. Realizat de Carmen Rus. Maxime si Minime. Căutare binară. Căutari de elemente. Căutare liniară. Parcurgeri. Sume si num ă r ă ri. Oare de ce dai daca apesi butonul acesta ??. Puţină teorie. Dacă vreţi binenţeles. Daca nu apăsaţi. - PowerPoint PPT Presentation

TRANSCRIPT

  • Tablouri unidimensionaleAlgoritmi fundamentaliRealizat de Carmen Rus

  • Cutari de elementeMaxime si MinimeCutare binarCutare liniarSume si numrriParcurgeri Oare de ce dai daca apesi butonul acesta ??

  • Puin teorie. Dac vrei bineneles.Daca nu apsai

  • Cautari de elemente

  • Probleme

  • {Cunoscandu-se numele, inaltimea si greutateaa n elevi sa se afisezenumele acestora in ordinea descrescatoare a inaltimi. Daca exista doi elevicu aceeasi inaltime se va afisa cel care are greutatea mai mare.}

  • uses crt;var aux,i,j,n,k,min:integer; a,e:array[1..100] of string; b,c,d,f:array[1..100] of integer; aux1:string;begin clrscr; writeln('Dati numarul de elevi 1
  • {Se citesc n numere intregi. Sa se afiseze cel mai mare numar obtinut din prima cifra a fiecarui numar.}

  • var d:array[1..20] of byte;a,i,c,aux,j,nr,n:longint;beginwrite('dati nr de nr');readln(n);writeln('Dati elem: ');for i:=1 to n dobeginreadln(a);aux:=a;while aux0 do beginc:=aux mod 10;aux:=aux div 10; end;d[i]:=c end;for i:=1 to n-1 do for j:=i+1 to n do if d[i]
  • {Se citesc de la tastatura n numere naturale. Se cere sa se sorteze sirul in ordinea crescatoare a numarului de apaitii a cifrei 1 in reprezentarea in baza 2 a numerelor.In cazul in care doua numere au aceeasi numar de cifre egale cu 1 in reprezentare lor binara atunci ele vor aparea in ordinea in care sunt citite de la tastatura.}

  • var a,b,c,d:array[1..100]of longint; aux,n,k,i,j:integer;begin writeln('Dati nr de elemente ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); d[i]:=a[i]; j:=0; while a[i]>0 do begin if a[i] mod 2=1 then j:=j+1; a[i]:=a[i] div 2 {in a[i] o sa am doar valoarea 0} end; b[i]:=j; c[i]:=j;{retine pozitiile inainte de sortare} end;for i:=1 to n-1 do for j:=i+1 to n do if b[i]>b[j] then begin aux:=b[j]; b[j]:=b[i]; b[i]:=aux {b[i]retine poz dupa sortare} end;k:=0;for i:=1 to n do begin for j:=1 to n do if (b[i]=c[j]) and (b[i]>k) then write(d[j],' '); k:=b[i] end;readlnend.

  • {Dandu-se un vector cu maxim 100 de numere naturale, sa se localizeze elmentul maxim si toate elementele dinaintea lui sa se ordoneze crescator, iar cele de dupa el descrescator.}

  • var a,b:array[1..100]of integer; max,aux,n,k,i,j:integer;begin writeln('Dati nr de elemente ');readln(n); max:=-maxint;for i:=1 to n do begin write('a[',i,']=');readln(a[i]); if a[i]>max then begin max:=a[i]; end; end; for i:=1 to n do if a[i]=max then k:=i; for i:=1 to k-1 do for j:=i+1 to k do if a[i]>a[j] then begin aux:=a[i]; a[i]:=a[j]; a[j]:=aux end; writeln;for i:=k+1 to n-1 do for j:=i+1 to n do if a[i]
  • Maxime si Minime

  • Probleme

  • {Se dau doi vectori x,y cu n componente. Primul contine nume de elevi, iar al doilea notele la informatica. Se cere sa se afiseze numele elevilor cu nota cea mai mica. Daca mai multi elevi au aceasta nota vor fi afisati toti.}

  • uses crt;var i,n,min:integer; x:array[1..100] of string; y:array[1..100] of integer;begin clrscr; writeln('Dati numarul de elevi 1
  • {Sa se realizeze programul pentru determinare elementului maxim si a tuturor pozitilor unde apare el intr-un vector A de numere intregi cu dimensinea N.}

  • var a:array[1..100]of longint; max,n,k,i,j:integer;begin writeln('Dati nr de elemente ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end; max:=-maxint;for i:=1 to n do begin if (a[i]>max) then max:=a[i];end; writeln('Nr maxim este ', max ); writeln('pozitile maximului in vector sunt: '); for i:=1 to n do if a[i]=max then write (i,' ');

    readln end.

  • {Sa se determine elementele cu numar maxim de divizori si elementele cunumar minim de divizori dintr-un vector x de numere intregi.}

  • var a,b:array[1..100]of integer; max,min,n,k,i,j:integer;begin writeln('Dati nr de elemente ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); k:=0; for j:=1 to a[i] do begin if a[i] mod j=0 then begin k:=k+1; b[i]:=k end end end;max:=-maxint;min:=maxint;for i:=1 to n do begin if (b[i]>max) then max:=b[i]; if b[i]
  • {Se da un vector continand litere. Sa se afiseze frecventa aparitiei fiecarei litere in vector si literele cu cea mai mare frecventa, respectiv cea mai mica frecventa de aparitie.}

  • var a,b:array[1..100]of char; c,d,e:array[1..100] of integer; max,min,n,k,i,j,l:integer;aux:char;begin writeln('Dati nr de elemente ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin aux:=a[j]; a[j]:=a[i]; a[i]:=aux end;l:=1;for i:=ord('A') to ord('Z') do begin k:=0; for j:=1 to n do if i=ord(a[j])then k:=k+1; c[l]:=k; l:=l+1; end;l:=1;for i:=ord('a') to ord('z') do begin k:=0; for j:=1 to n do if i=ord(a[j]) then k:=k+1; d[l]:=k; l:=l+1; end;

  • min:=maxint;max:=-maxint;for i:=1 to l do begin e[i]:=c[i]+d[i]; end;for i:=1 to l do begin if (e[i]0) then min:=e[i]; if e[i]>max then max:=e[i] end; writeln('Litera/Literele cu cea mai mare frecventa de aparitie este/sunt:'); for i:=1 to l do if e[i]=max then write(chr(64+i),' ');writeln; writeln('Litera/Literele cu cea mai mica frecventa de aparitie este/sunt:'); for i:=1 to l do if e[i]=min then write(chr(64+i),' ');{ for i:=1 to n do write (a[i],' ');}readlnend.

  • {Se citeste de la tastatura un sir cu n elemente numere naturale,nu neaparat distincte. Sa se afiseze elementul care apare de cele mai multe ori in sir. Daca exista mai multe astfel de elmente,se vor afisa toate.}

  • var a,b:array[1..100]of longint; max,n,k,i,j:integer;aux:longint;begin writeln('Dati nr de elemente ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin aux:=a[j]; a[j]:=a[i]; a[i]:=aux end; k:=1;j:=0;for i:=1 to n do begin if a[i]=a[i+1] then inc(k) else begin j:=j+1 ; b[j]:=k; if i=n-1 then b[j+1]:=1; k:=1; end; end; max:=-maxint;for i:=1 to j+1 do if b[i]>max then max:=b[i];{write(max:5);writeln;}k:=1;for i:=1 to j+1 do if b[i]=max then begin write(a[k],' '); k:=k+b[i] end else k:=k+b[i];

    readln end.

  • {Se considera un sir cu n numere naturale. Se cere sa se afiseze un numar din sir care in scrierea sa cat mai multe cifre distincte. Daca exista mai multe numere cu aceasta proprietate se va afisa primul dintre ele.}

  • var t,k,i,j,l,n,aux:longint; a,b,c,d:array[1..100]of longint;beginwrite('Dati n: ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); t:=1;k:=0;d[i]:=a[i]; repeat k:=k+1; b[k]:=a[i] mod 10; a[i]:=a[i] div 10; until a[i]=0; for j:=1 to k-1 do for l:=j+1 to k do if b[j]>b[l] then begin aux:=b[j]; b[j]:=b[l]; b[l]:=aux end;for j:=1 to k-1 do if b[j]b[j+1] then t:=t+1; c[i]:=t end;l:=c[1];for i:=2 to n do if l

  • Cautare binara

    a)pe structura repeat..until b)pe structura while..do

  • program cautare_binara;var n,i,j,aux,x,ls,ld,mij:integer; a:array[byte] of integer;beginwrite('n=');readln(n);for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end;write('x=');readln(x);for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin aux:=a[i]; a[i]:=a[j]; a[j]:=aux; end;ls:=1;ld:=n;repeat mij:=(ls+ld) div 2; if a[mij]=x then writeln('cautare cu succes') else if a[mij]>x then ld:=mij-1 else ls:=mij+1;until (a[mij]=x) or (ls>ld);if ls>ld then write('nu exista ',x,' in vector'); readln end.a)

  • ls:=1;ld:=n;mij:=(ls+ld) div 2;sw:=0;while (a[mij]x) and (lsx then ld:=mij-1 else ls:=mij+1; mij:=(ls+ld) div 2; end;if a[mij]=x then writeln('este in vector') else writeln('nu exista ',x,' in vector'); readln end.program cautarebinara;var n,i,j,aux,x,ls,ld,mij,sw:integer; a:array[byte] of integer;beginwrite('n=');readln(n);for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end;write('x=');readln(x);for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin aux:=a[i]; a[i]:=a[j]; a[j]:=aux; end;b)

  • Cautare liniara

  • program cautare_liniara;var a:array[1..50] of integer; x:integer; i,n,sw:byte;beginwrite('n=');readln(n);for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end;write('x=');readln(x);sw:=0;for i:=1 to n do if a[i]=x then sw:=1;if sw=0 then write(x,' nu se afla in vector')else write('cautare cu succes');readlnend.

  • Parcurgeri Sume si numarari

  • Probleme

  • {Scrieti un program care tipareste elementele pare aflate pe pozitiidivizibile cu 3 dintr-un vector de nr intregi.}var a:array[1..30] of integer;s,n,i:integer;begin write ('n= ');readln(n); for i:=1 to n do begin write ('a[',i,']=');readln(a[i]) end; i:=3; while i
  • {Fiid dat un vector de numere intregi,sa se determine suma elementelor pozitive din vector.}var a:array[1..30] of integer;s,n,i:integer;begin write ('n= ');readln(n); for i:=1 to n do begin write ('a[',i,']=');readln(a[i]) end; s:=0; for i:=1 to n do if a[i]>0 then s:=s+a[i]; writeln('Suma este: ', s); readln;end.

  • {Sa se afiseze doar elementele pare dintr-un vector de numere intregi.}var a:array[1..30] of integer;s,n,i:integer;begin write ('n= ');readln(n); for i:=1 to n do begin write ('a[',i,']=');readln(a[i]) end; for i:=1 to n do if a[i] mod 2=0 then write ('Numerele sunt: a[i],','); readln end.

  • {Se citeste de la tastatura un vector cu n componente de tip intreg.Se cere sa se construiasca si sa se afiseze un nou vector cu componentele patrate perfecte din vectorul initial.}var a,b:array[1..100] of integer;n,i,j,p,k:integer;begin write ('n= ');readln(n);k:=0; for i:=1 to n do begin write ('a[',i,']=');readln(a[i]); if a[i]>=0 then for j:=1 to trunc(sqrt(a[i])) do if j*j=a[i] then begin k:=k+1; b[k]:=a[i] end; end; writeln('Componentele patrate din vectorul dat sunt: '); for i:=1 to k do write(b[i], ' '); readln end.

  • {Sa se calculeze suma elementelor negative si de valoare para dintr-un vector de nr intregi}var a:array[1..30] of integer;s,n,i:integer;begin s:=0; write ('n= ');readln(n); for i:=1 to n do begin write ('a[',i,']=');readln(a[i]); if (a[i]
  • {Se da un vector v cu n elemente numere intregi.Sa se copiezeintr-un vector u elementele pozitive ale vectorului initial}var a,b:array[1..30] of integer;n,i,j:integer;begin write ('n= ');readln(n);j:=0; for i:=1 to n do begin write ('a[',i,']=');readln(a[i]); if a[i]>0 then begin j:=j+1; b[j]:=a[i] end; end; for i:=1 to j do write(b[i],' '); readln;end.

  • {Se da un vector de numere reale.Sa se determine procentulde numere din vector mai mici strict decat MA si procentulde numere din vector mai mari strict decat MA,unde am notat cu MA media aritemtica a componentelor din vector.}var a:array[1..30] of real;n,i,p,k:integer;ma,s:real;begin s:=0; write ('n= ');readln(n); for i:=1 to n do begin write ('a[',i,']=');readln(a[i]); s:=s+a[i]; end; ma:=s/n; for i:=1 to n do if a[i]>ma then k:=k+1 else if a[i]
  • {Scrieti un program care citeste de la tastatura cele n numere reale ce compun vectorul a si apoi cele m numere reale ce constituie componentele vectorului b si afiseaz pe ecran cate din componentele lui a sunt strict mai mici decat toate componentele vectorului b.}var a,b:array[1..30] of real;n,i,m,j:integer;begin write ('n= ');readln(n);write ('m= ');readln(m); for i:=1 to n do begin write ('a[',i,']=');readln(a[i]); end; for j:=1 to m do begin write ('b[',j,']=');readln(b[j]); end;for i:=1 to n do if a[i]
  • {Fiind dat un vector v cu n elemente numere intregi ,sa se construiascaalti doi vectori :primul care va contine numai elemente pare ,iar aldoilea numai elem impare din vectorul initial}var a,b,c:array[1..30] of integer;n,i,m,p:integer;begin write ('n= ');readln(n);m:=0;p:=0; for i:=1 to n do begin write ('a[',i,']=');readln(a[i]); if a[i] mod 2=0 then begin inc(m); b[m]:=a[i]; end else begin inc(p); c[p]:=a[i]; end; end; readln end.

  • {Fie un vector x de numere intregi. Sa se formeze un vector y de numere intregi, in care y[i] sa fie restul impartiri lui x[i] la suma cifrelor lui x[i].}type vector=array[1..100] of integer;var x,y:vector;aux,s:integer;i,n,c:byte;beginWriteln('Dati dimensiunea vector,
  • {La codificarea unui text scris cu cel mult primele n litere mici ale afabetului englez, se folosesc cele mai mici n numere naturale care au exact 3 divizori naturali. Pentru litera 'a' se foloseste cel mai mic nr cu proprietatea respectiva, pentr 'b' cel mai mic numar diferit de cel folosit pentru 'a',si asa mai departe. a)Sa se afiseze, separate prin cate un spatiu, cele n numere folosite la codificare. b)Pentru un text dat de la tastatura,se cere sa se afiseze codificarea textului, fiecare caracter fiind inlocuit cu numarul corespunzator si orice doua coduri conscutive vor fi separate printr-un spatiu.}

  • var n,i,d,j,c:integer;a:array[1..25] of char;b:array[1..25] of integer;begin writeln('Dati nr de litere -vezi enunt');readln(n); writeln('Dati textul');for i:=1 to n do read(a[i]);i:=4;repeat d:=2;c:=1;while(d
  • {Sa se calculeze cmmdc(x1,x2,x3,...,xn)}type vector=array[1..100] of integer;var a:vector;cmmdc:integer;i,n:byte;beginWriteln('Dati dimensiunea vector,
  • {Cate numere perfecte exista in tabloul x=(x1,x2,..,xn) de numere intregi citite de la tastatura. Un numar este perfect daca este egal cu suma divizorilor sai mai mici ca el.}var a:array[1..100]of integer; d,s,n,k,i,j:integer;begin writeln('Dati nr de elemente ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;k:=0; write('Numerele perfecte sunt: ');for i:=1 to n do begin s:=0; for j:=1 to a[i] do if a[i] mod j=0 then s:=s+j ; if (2*a[i]=s) and (a[i]>0) then begin k:=k+1; write(a[i],' ') end; end; write('Avem ',k,' numere perfecte. ');readlnend.

  • {Cate elemente dintr-un vector de numere intregi sunt prime cu un nr dat.}var a:array[1..100]of integer; q,n,k,i,j,t:integer;begin writeln('Dati nr de elemente ');readln(n); writeln('Dati un nr. k ');readln(k);q:=k;for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;writeln('Nr care sunt prime cu ',k ,' sunt: ');for i:=1 to n do begin t:=a[i]; while a[i]k do if a[i]>k then a[i]:=a[i]-k else k:=k-a[i]; k:=q; if a[i]=1 then begin j:=j+1; write(t,' ') end; end;writeln;writeln('Avem: ',j,' nr prime cu ',q); readln end.

  • {Se considera un sir de n numere reale. Sa se scrie un program care elimina di sir valorile ce se afla in afara intervalului [a,b].}var c,d:array[1..30]of integer; a,b,i,n,aux,k:integer;begin writeln('Dati a si b');readln(a);readln(b); writeln('dati nr de componente: ');readln(n);k:=0;for i:=1 to n do begin write('c[',i,']=');read(c[i]); end;if a>b then begin aux:=b; b:=a; a:=aux; end;for i:=1 to n do if (c[i]>=a) and (c[i]
  • {Fie un vector de numere intregi.Sa se afiseze toate tripletele de numere consecutive din x,in care al treilea numar este media aritmetica a primului cu cel de al doilea.}var i,n:integer; a:array[1..100]of integer;beginwrite('Dati n: ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;for i:=1 to n-2 do if a[i+2]=(a[i]+a[i+1])/2 then write('(',a[i],' ',a[i+1],' ',a[i+2],')');readlnend.

  • {Sa se calculeze ultima cifra a numarului x[1]+x[2]+..+x[n],unde x esteun vector cu n componente numere naturale citite de la tastatura.}var a,b:array[1..30] of integer; i,n,s:integer;begin writeln('Dati nr de componente: ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;for i:=1 to n do begin b[i]:=a[i] mod 10; s:=s+b[i]; end; writeln('ultima cifra a sumei este: ',s mod 10);readlnend.

  • {Fie un vector de numere intregi.Sa se afiseze toate tripletele de numereconsecutive din x,in care al treilea numar este restul inmpartirii primuluila al doilea.}var i,n:integer; a:array[1..100]of integer;beginwrite('Dati n: ');readln(n);for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end;for i:=1 to n-2q do if a[i] mod a[i+1]=a[i+2] then write('(',a[i],' ',a[i+1],' ',a[i+2],')');readlnend.

  • 1.Stiind ca variabila x este utilizata intr-un program pentru a memora mediile din semestrul al doilea ale uni elev de clasa a XII-a la cele 16 discipline din catalog,stabiliti care este declararea corespunzatoare x ?

    a) var x:byte; b) var x:array[1..16,1..12] of byte; c) var x:array[1..16] of byte; d) var x:array[1..15] of byte;Next

  • 2.Se considera algoritmul reprezentat in limbaj pseudocod: citeste n; pentru I= 1, n executa citeste ai; citeste p; pentru I= 1, n executa inceput aux
  • 3.Se da urmatorul program. Ce face el ?var a:array[1..30] of integer;s,n,i:integer;begin s:=0; write ('n= ');readln(n); for i:=1 to n do begin write ('a[',i,']=');readln(a[i]); if (a[i]
  • 4.Se da urmatorul program:var a:array[1..30] of integer;s,n,i:integer;begin write ('n= ');redln(n); for i:=1 to n do begin write ('a[',i,']=');readln(a[i]) end; for i:=1 to n do if a[i] mod 2=0 then wrte ('Numerele sunt: a[i],','); readln end.Dupa efectuarea acestui program se vor afisa:a)Vectorulb)Si elmetele pare si cele impare dintr-un vectorc)Numerele care impartite la 2 dau restul zerod)Nimic deoarece este gresit programulNext

  • 5. Daca vectorul a contine 3, 4, 6, 2, 1 atunci vectorul b va fi:

    2 44 22 4 1-3 4 2J:= 0;For I:= n downto 1 do if (I mod 2= 0) and (a[I] mod 2= 0) then begin inc (j); b[j]:= a[I];End;Next

  • DANU

  • Puin teorie. Dac vrei bineneles.Daca nu apsai

  • Ai rspuns greitMai cearcBack

  • Mai pune-ti pofta in cui

  • Gandeti bine ! Back

  • tiu ca v-a placut SfaritDaca nu, imi pare rau, dar altul nu mai fac !