30_tétel Szétválogatás (Algoritmus, használati lehetőségek, példák a használatra) A szétválogatás tétele Közös jellemző: Egyetlen sorozatot valamilyen feltételek alapján több sorozatba válogatunk szét. Egy tömbben N db természetes szám van. Válogassuk szét párosakra és páratlanokra! |Feladatvizsgálat: | |1. Bemenő adatok: | | n: az eredeti tömb elemszáma, byte típusú. | | s: az eredeti tömb, elemei integer típusúak | |2. Kimenő adatok: | | adb, bdb: a páros illetve a páratlan elemeket tartalmazó tömb | |elemszáma. | | a, b: az eredményként kapott páros illetve páratlan elemű tömb. | |3. Matematikai eszközök: egészosztás maradéka. | |4. Belső változók: | | i: futóváltozó, byte típusú. | |5. A program logikája: ha a 2-vel való osztás maradéka nulla, páros | |számot kapunk. | |Folyamatábra: | |[pic] | |Program: | | | |procedure szet_9(n:byte; s:tomb; var adb,bdb:byte; var a,b:tomb); | |var i:byte; | |begin | | {Egy tömb elemeit valamilyen tulajdonság - itt paritás - alapján két| | | | másik tömbbe másoljuk.} | | adb:=0; bdb:=0; | | for i:=1 to n do | | if s[i] mod 2 =0 then begin inc(adb); a[adb]:=s[i]; end | | else begin inc(bdb); b[bdb]:=s[i]; end; | |end; | | | Adott az X sorozat (3,5,2,8,11,7) válogassuk ki az Y sorozatba a páros a Z sorozatba a pártatlan elemeket. | |Leíró nyelven |Pascal nyelven megfogalmazva | | |megfogalmazva | | |[p|Algoritmus |Program szetvalogatas; | |ic|Konstans |Const N=6; | |] | N=6; | X:array[1..N] of byte= | | | X:array[1..N] of | | | |byte= | (3,5,2,8,11,7); | | | |Var Y:Array[1..N] of byte; | | |(3,5,2,8,11,7); | | | | Változó | Z:Array[1..N] of byte; | | | Y : tömb[1..N] | | | |egész | Par, Ptlan:Byte; | | | Z : tömb[1..N] | I:Byte; | | |egész | | | | Par,Ptlan : | | | |egész | | | | I : egész | | |[p| Algoritmus törzs |Begin | |ic| Par:=0 | Par:=0; | |] | Ptlan:=0 | Ptlan:=0; | | | I:=1 | I:=1; | | | Ismételd mialatt | While I<=N Do | | |I<=N | Begin | | | Ha Páros(X[I]) | If(X[I] mod 2) =0Then | | |Akkor | | | | Par:=Par+1 | Begin | | | | Par:=Par+1; | | | | Y[Par]:=X[I]; | | |Y[Par]:=X[I] | End | | | Különben | Else | | | | Begin | | |Ptlan:=Ptlan+1 | | | | |Ptlan:=Ptlan+1; | | |Z[Ptlan]:=X[I] | | | | Elágazás vége |Z[Ptlan]:=X[I]; | | | I:=I+1 | End; | | | Ismétlés vége | I:=I+1; | | |Algoritmus vége | End; | | | |End. | | | | |