tehnici_de_programare_triere

Upload: vulpe-maria

Post on 08-Apr-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/7/2019 tehnici_de_programare_triere

    1/17

    Tehnici de programare

    Metoda trierii

  • 8/7/2019 tehnici_de_programare_triere

    2/17

    Descriere

    Fie P o problem, soluia creia se afl printreelementele mulimii S cu un numr finit deelemente.

    S={s1, s2 , s3 , ... , sn}

    Soluia se determin prin analiza fiecruielementsi din mulimea S.

  • 8/7/2019 tehnici_de_programare_triere

    3/17

    Schema de aplicare

    x satisfacecondiia problemei

    x s1

    n S exist

    elemente necercetate

    STOP

    START

    Includem x n soluie

    da

    x un element necercetat din S

    da

    nu

    nu

  • 8/7/2019 tehnici_de_programare_triere

    4/17

    Problem prototip

    Se consider numerele naturale din mulimea

    {1, 2, 3, ..., n}. S se determine toateelementele acestei mulimi, pentru care sumacifrelor este egal cu un numr datm.

    Schema de rezolvare

    Pentru i de la 1 pn la n:

    Se calculeaz suma cifrelor numrului i.

    Dac suma cifrelor este egal cu mincludem i n soluie

  • 8/7/2019 tehnici_de_programare_triere

    5/17

    Particulariti de implementare

    Generarea i cercetarea consecutiv a

    elementelor mulimii S.

    Utilizarea funciilor i procedurilor pentru

    fiecare din subproblemele: Verificarea apartenenei elementului cercetatsi la

    soluie

    Plasarea elementului curent n soluie Generarea urmtorului element al mulimii

    (dac e necesar)

  • 8/7/2019 tehnici_de_programare_triere

    6/17

    Problem

    S se scrie un program care determin toatesecvenele binare de lungime n, fiecare din eleconinnd nu mai puin de k cifre de 1.

    Intrare: numere naturale n, 1

  • 8/7/2019 tehnici_de_programare_triere

    7/17

    Analiza problemei

    Numrul secvenelor binare de lungime neste 2n, finit.(vezi: Informatica, manual pentru clasa X)

    Prin urmare, pentru problema dat poate

    fi aplicat metoda trierii.

  • 8/7/2019 tehnici_de_programare_triere

    8/17

    Modelul matematic

    ;1211...111

    ;2210...111

    ...

    ;2010...00

    ;101...000

    ;000...000

    !

    !

    !

    !

    !

    n

    n

    n

    n

    n

    n

    n

    Elementele mulimii

    S

    pot fiinterpretate ca numere {0, 1,2, ..., 2n-1}, reprezentate pen poziii binare.

    Pentru generarea consecutiva secvenelor binare se vautiliza formula:

    s0 = 0;si = si-1 + 1; i=1, ..., 2n-1

  • 8/7/2019 tehnici_de_programare_triere

    9/17

    Separarea subproblemelor

    Generarea secvenelor binare de lungime ncu r, r>k uniti

    Generareasecvenelorbinare delungime n

    Determinareanumrului de

    uniti n

    secvena curent

    Prelucrareasoluieicurente

  • 8/7/2019 tehnici_de_programare_triere

    10/17

    Structuri de date

    tablou unidimensional cu n elemente, ce potprimi valoarea 0 sau 1. Pentru problemapropus n nu depete valoarea 20.

    fiier text pentru stocarea soluiei.

  • 8/7/2019 tehnici_de_programare_triere

    11/17

    Algoritm

    Iniializm variabilele n ik, fiierul deieire, tabloul B.

    Pasul 1. Cercetarea secvenei curente

    Se calculeaznumrul deuniti (r) n secvena curentB

    Pasul 2. Prelucrarea soluiei

    Dac r u k, secvena curentB este nscris n fiierul deieire.

    Pasul 3. verificarea prezenei secvenelor necercetate Dac r = n se nchide fiierul deieire, apoi STOP.

    Pasul 4. Generarea secvenei urmtoare

    Dac B[n]=0 atunciB[n] 1

    n caz contrar: i n

    att timp ct B[i] = 1 repetm

    B[i] 0; i i1;

    pentruindicele curent i B[i] 1

    Revenim laPasul 1.

  • 8/7/2019 tehnici_de_programare_triere

    12/17

    Declaraii

    P

    rogram Triere;const

    nmax=20;

    type

    secventa01=

    array[1..nmax] of 0..1;

    var

    b:secventa01;r,i,n,k:integer;

    f:text;

  • 8/7/2019 tehnici_de_programare_triere

    13/17

    Funcii

    function numara1:integer;

    var

    s,j:integer;

    begin

    s:=0;

    forj:=1 ton dos:=s+b[j];

    numara1:=s;

    end;

  • 8/7/2019 tehnici_de_programare_triere

    14/17

    Proceduriprocedure scrie;

    var j: integer;

    beginfor j:=1 to n do write (f,b[j]);

    writeln(f);

    end;

    procedure urmator (var x:secventa01);

    var j:integer;

    begin j:=n;

    while x[j]=1 dobegin x[j]:=0; j:=j-1; end;

    x[j]:=1;

    end;

  • 8/7/2019 tehnici_de_programare_triere

    15/17

    Blocul de calcul

    begin

    readln(n,k);assign(f,'OUT.TXT');rewrite(f);

    fori:=1 ton dob[i]:=0;

    repeat

    r:= numara1;ifr >=k then scrie;

    ifr < n then urmator(b);

    until r=n;

    close(f);

    end.

  • 8/7/2019 tehnici_de_programare_triere

    16/17

    Literatura recomandat:

    Gremalschi A. Informatica. Tehnici de

    programare, manual pentru clasa a 11-a.Chiinu, tiina, 2003.

    Gremalschi A., Mocanu Iu., Gremalschi L.Informatica. Structura calculatorului. Manualpentru clasa a 10-a. Chiinu, tiina, 2000.

  • 8/7/2019 tehnici_de_programare_triere

    17/17

    Probleme pentru rezolvare

    prin metoda trierii

    Compartimentul VI. Probleme de generalizare

    Itemii:19, 20, 21, 22, 30, 31, 32, 33,34, 35, 40, 41, 45, 46, 47, 48.