Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Lortech

    addikt

    válasz Lortech #1048 üzenetére

    Még kiegészítés:
    for i:=1 to 10 do
    s:=tomb[ i ];
    tomb[ i ] :=tomb [i+1];
    tomb[i+1]:=s
    Ez gondolom egy cserét valósítana meg. De gondolj bele, neked nem az kell, hogy kicseréld az elemeket, hanem, hogy eggyel növeld vagy csökkentsd a sorszámukat.
    Pl i=1, irany=''f''-nél tfh. tomb[1]=10, tomb[2]=20, ha kicseréled őket a te módszereddel, akkor igaz, hogy a 10-es eggyel nagyobb, illetve a 20-as eggyel kisebb indexszel fog rendelkezni (tomb[1]=20], tomb[2]=10), de ez neked nem együtt kell, hanem külön külön, az irány megválasztásának megfelelelően. És ha belegondolsz, i=2 esetben tomb[2]=10-et fogod kicserélni tomb[3]=30-ra, és így már kettőt lépett előre, és a végén azt éred el, hogy a tomb[1]=10 elment a legutolsó helyre. Ellenben ha megfigyeled az általam leírt módszert, és deklarálsz a tomb[1] elé egy tomb[0]-t, akkor ebbe beteszed a i=1 esetben a tomb[1]=10-et, tomb[1] ekkor a végső helyére került, az eredetinél eggyel alacsonyabb sorszámú helyre, így i=2 esetben a 10-es nyugodtan felülírható a következő értékkel ( 20).
    irany=l esetén ugyanez, csak visszafelé. Ott az i=10-nél a 11-es indexű tömb lesz a pótlás, abba rakod a 10. elemet, ekkor ez helyére került, így felülírható a 10. elem a 9.-kel, és így tovább.
    A kiírás pedig azért az utolsó tömbelemet írná csak ki, ha egyáltalán működne, mert nem foglaltad ciklusba a kiiratást, és csak egyszer fut le, így csak az i-ben utoljára megmaradt indexnek megfelelő tomb[ i ] elemet írja ki. Többet azt hiszem már tényleg nem tudok segíteni. :))

    illetve de ( :DD ): még annyit hozzá kell tenni, hogy ezzel a módszerrel a kiíratást is irany=f/l-nek megfelelően kell elvégezni, mivel ''f'' esetén 2-től 11-ig kell kiiratnod az elemeket (melléírva az indexét, mivel csak úgy tudod prezentálni, hogy tényleg azt csináltad amit kellett), ''l'' esetén pedig 0-9-ig ugyanígy. A kiiratást elvégezheted még a sorszámnövelő/csökkentő rész közben is, az if-en belül, felhasználva azt, vagy az egész után egy újabb if bevezetésével.

    [Szerkesztve]

Új hozzászólás Aktív témák