Algoritmusok 2. rész

A cikksorozat előző részében az algoritmusok alapfogalmaival ismerkedhettünk meg. Ez a rész tovább folytatja a megkezdett elméleti ismeretanyag átadását, és egy pár egyszerű feladatot, illetve pár alapvető adatstruktúrával való munkát mutatunk be olvasóinknak.

Tetszőleges egész szám abszolút értéke

Vagyis A=|A|. Minden esetben egy pozitív értéket térít vissza, melyet a szám abszolút értékének nevezünk. Más hozzáállásból tekintve, ez a szám távolsága a 0-tól.

DEKLARÁCIÓK

A: Egész

ALGORITMUS KEZD

  BE: A

  HA A<0 AKKOR

    KI:=-A

  KÜLÖNBEN

  KI: A

ALGORITMUS VÉGE.

Tetszőleges egyismeretlenes egyenlet megoldása

Az AX+B=0 egyenletnek egy ismeretlene van, az X, őt kell meghatározni. Különös figyelmet fordítsunk arra, hogy ha az A bemeneti paraméter értéke nulla (0) akkor valójába nincs is egyenlet, ezen esetben amennyibe a B értéke nem nulla, akkor hiba, ellenkező esetbe viszont bármely X megoldás lehet.

DEKLARÁCIÓK

A,B,X: Valós

KEZD

  BE: A,B

  HA A=0 AKKOR

    KI: ’Hibás bemenő A’

  KÜLÖNBEN

    HA B = 0

      KI: ‘Bármely X megoldás’

   KÜLÖNBEN

      KI: ’X=’,-B/A

VÉGE.

Két elem cseréje

Nagyon gyakran fordul elő, hogy egy algoritmus keretein belül két elemet ki kell cserélni (majd később a rendezési algoritmusoknál rengeteget fogunk találkozni ezzel a "mini" algoritmussal). A két elem cseréje a következőképpen néz ki:

DEKLARÁCIÓK:

A,B,C: Típus

KEZD

  BE: A,B

  C:=A

  A:=B

  B:=C

VÉGE.

Két szám legnagyobb közös osztója

A nagyobbik számot csökkenteni kell a kisebbikkel, és a kapott értékre át kell írni. Ezt addig kell folytatni, amíg egyenlő számot nem kapunk. Ez az érték a két szám legnagyobb közös osztója.

Pl.

27/21

27         21

6          21

6          15

6          9

6          3

3          3

DEKLARÁCIÓK

  A,B: Egész

KEZD

  BE: A,B

  HA (A<=0) OR (B<=0) AKKOR

    KI: ’Hibás bemenő adatok!’

  KÜLÖNBEN

    CIKLUS amíg A<>B

      HA A>B AKKOR

        A:=A-B

      KÜLÖNBEN

        B:=B-A

    CVÉGE

    KI: ’A közös nevezőjük:’, A

  HAVÉGE

VÉGE.

Egydimenziós tömb elemeinek feltöltése

Az egydimenziós tömb a legegyszerűbb adatstruktúra, melynek hasznossága vitathatatlan. Úgy kell elképzelni, mint egymás után rakott, azonos típusú elemek hosszú sora, minden elemének van egy úgynevezett indexe, mely nem más, mint a tömbben elfoglalt pozíciója.

Tomb[1..N]

CIKLUS I:=1-től N-ig

  BE: Tomb[I]

CVÉGE

Egydimenziós tömb kiírása

Tomb[1..N]

CIKLUS I:=1-től N-ig

  KI: Tomb[I]

CVÉGE

Kétdimenziós tömb feltöltése

A kétdimenziós tömb nem más, mint egy olyan tömb, melynek minden eleme egy egydimenziós tömb. Konyhanyelven pedig a legegyszerűbb, ha úgy képzeljük el, mint egy szekrényt, melynek fiókjai vannak, minden sorban ugyanannyi fiók, és hivatkozhatunk rájuk a következőképpen: az i. sorból a j. fiók. Kétdimenziós tömbnek két indexe van: egy a sornak, egy az oszlopnak.

Tomb[1..N, 1..M]

CIKLUS I:=1-től N-ig

  CIKLUS I:=1-től M-ig

    BE: Tomb[I,J]

  CVÉGE

CVÉGE

Kétdimenziós tömb kiírása

Tomb[1..N, 1..M]

CIKLUS I:=1-től N-ig

  CIKLUS I:=1-től M-ig

    KI: Tomb[I,J]

  CVÉGE

CVÉGE

Szűcs Tamás