Your SlideShare is downloading. ×
Tehnici de programare_triere
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Tehnici de programare_triere

2,960

Published on

Published in: Education, Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,960
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
71
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Mulţimea S nu va mai conţine elemente necercetate după generarea secvenţei formate doar din uintăţi
  • Transcript

    • 1. Tehnici de programare Metoda trierii
    • 2. Descriere
      • Fie P o problemă, soluţia căreia se află printre elementele mulţimii S cu un număr finit de elemente. S={s 1 , s 2 , s 3 , ... , s n }
      • Soluţia se determină prin analiza fiecărui element s i din mulţimea S .
    • 3. Schema de aplicare x satisface condiţia problemei x  s 1 în S există elemente necercetate STOP START Includem x în soluţie da x  un element necercetat din S da nu nu
    • 4. Problemă prototip
      • Se consider ă numerele naturale din mul ţ imea { 1, 2, 3, ..., n } . S ă se determine toate elementele acestei mul ţ imi, pentru care suma cifrelor este egal ă cu un num ă r dat m .
      • Schema de rezolvare
      • Pentru i de la 1 p î n ă la n :
          • Se calculează suma cifrelor numărul ui i .
          • Dacă suma cifrelor este egală cu m includem i în solu ţ ie
    • 5. Particularităţi de implementare
      • Generarea şi cercetarea consecutivă a elementelor mulţimii S .
      • Utilizarea funcţiilor şi procedurilor pentru fiecare din subproblemele:
        • Verificarea apartenenţei elementului cercetat s i la soluţie
        • Plasarea elementului curent în soluţie
        • Generarea următorului element al mulţimii (dacă e necesar)
    • 6. Problemă
      • S ă se scrie un program care determin ă toate secven ţ ele binare de lungime n , fiecare din ele con ţ in î nd nu mai pu ţ in de k cifre de 1 .
      • Intrare: numere naturale n , 1<n<20 , ş i k , k<n , se citesc de la tastatur ă . Ie ş ire: fiecare linie a fi ş ierului text OUT.TXT va con ţ ine câte o secven ţă binar ă distinct ă , ce corespunde condi ţ iilor din enun ţ ul problemei.
    • 7. Analiza problemei Num ă rul secven ţ e lor binare de lungime n este 2 n , finit . (vezi: Informatica, manual pentru clasa X ) Prin urmare, pentru problema dat ă poate fi aplicat ă metoda trierii .
    • 8. Modelul matematic Elementele mulţimii S pot fi interpretate ca numere { 0, 1, 2, ..., 2 n -1 }, reprezentate pe n poziţii binare. Pentru generarea consecutivă a secvenţelor binare se va utiliza formula: s 0 = 0; s i = s i-1 + 1; i=1, ..., 2 n -1
    • 9. Separarea subproblemelor Generarea secvenţelor binare de lungime n Determinarea numărului de unităţi în secvenţa curentă Prelucrarea soluţiei curente Generarea secven ţ elor binare de lungime n cu r, r>k unităţi
    • 10. Structuri de date
      • tablou unidimensional cu n eleme nte, ce pot primi valoarea 0 sau 1 . Pentru problema propus ă n nu depăşeşte valoarea 20 .
      • fişier text pentru stocarea soluţiei .
    • 11. Algoritm
      • Iniţializăm va riabilele n şi k , fişierul de ieşire, tabloul B .
      • P asul 1 . Cercetarea secvenţei curente
        • Se calculează numărul de unităţi ( r ) în secvenţa curentă B
      • P asul 2 . Prelucrarea soluţiei
        • Dacă r  k , secvenţa curentă B este înscrisă în fişierul de ieşire.
      • P asul 3 . verificarea prezenţei secvenţelor necercetate
        • Dacă r = n se închide fişierul de ieşire , apoi STOP .
      • P asul 4 . Generarea secvenţei următoare
        • Dacă B [n]=0 atunci B [n]  1
        • î n caz contrar : i  n atât timp cât B [ i ] = 1 repetăm B [ i ]  0 ; i  i –1 ; pentru indicele curent i B [ i ]  1
        • R ev e n im la P asul 1 .
    • 12. Declaraţii Program Triere ; const nmax=20; type secventa 01 = array [1..nmax] of 0..1; var b:secventa 01 ; r,i,n,k:integer; f:text;
    • 13. Funcţii function numara 1 :integer; var s,j:integer; begin s:=0; for j:=1 to n do s:=s+b[j]; numara 1 :=s; end;
    • 14. Proceduri procedure scrie; var j: integer; begin for j:=1 to n do write (f,b[j]); writeln(f); end; procedure urmator ( var x:secventa 01 ); var j :integer; begin j :=n; while x[ j ]=1 do begin x[ j ]:=0; j := j -1; end; x[ j ]:=1; end;
    • 15. Blocul de calcul begin readln (n,k); assign (f,'OUT.TXT');rewrite(f); for i:=1 to n do b[i]:=0; repeat r:= numara 1 ; if r >= k then scrie; if r < n then urmator(b); until r=n; close(f); end.
    • 16. Literatura recomandată:
      • Gremalschi A . Informatica. Tehnici de programare, m anual pentru clasa a 11-a . Chi ş in ă u , Ştiinţa, 2003.
      • Cerchez Emanuela. Programarea î n limbajul C / C++ pentru liceu. Vol. I – III. Polirom, Iaşi, 2007

    ×