Hirdetés

Keresés

Hirdetés

CyberSecurity Connect - blended learning, valódi labor kísérletezésre. Kiberbiztonsági képzés profiktól!
(használd a CYBSEC25PH kuponkódot további 20 ezer ft kedvezményért!)

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

  • Lortech

    addikt

    válasz Sátánné #1047 üzenetére

    Az a probléma, hogy a ph motor kiszedi az [ i ] -ket (most azért nem, mert szóközt raktam), mert idézetként tekinti őket. Úgyhogy az előzőekben feleslegesen koptattam a számat a tömbökről, meg az indexelésről, mert odaírtad te, csak mi nem láttuk.
    Az else azért nem jó, mert előtte több utasítás van, ezért az IF igaz ágát begin .. end közé kell rakni. Fontos, hogy az end után nem kell pontosvessző, mivel else követi.
    Ennek a sornak sincs túl sok értelme: ''tomb[i-1]'';
    További probléma, hogy a for után sem rakod begin .. end közé az utasításokat, hogyha több van belőlük, akkor ezt meg kell tenned, különben másképp fog lefutni.
    A tömböt 1-10-ig deklaráltad tanácsom ellenére, ami újabb problémához vezet, mivel amikor a i=10-hez érsz, 11. elemre hivatkozol, illetve irany='l' esetén i=1-nél 0. elemre, mely elemek nem léteznek, és ez futási hibát okoz. Ha a számlálós ciklust indexét csökkenteni akarod ''i:=10 to 1''-nél a to helyett downto-t kell használnod. Teljes programot pascalban tőlem biztos nem fogsz látni, sajnálom. Az a legelemibb dolog, hogy a nyelv szintaktikáját megtanulod, ez még nem programozás, de látszólag még ez sem megy. Az általános megoldást már leírtam, úgyhogy hajrá. :)

  • Lortech

    addikt

    válasz Sátánné #1040 üzenetére

    Érdekes próbálkozás. Nekem valahogy úgy tűnik, hogy vagy nincs is egyáltalán Pascalod, vagy a nyelv alapszintaktikáját nem ismered, és/vagy nem nagyon érted, mit is alkottál.

    Kezdjük az első for ciklustól:
    readln (tomb ); nem helyes, mivel tomb egy integer típusú tömb, így az egyes elemekre a for ciklus i index változójával hivatkozhatsz így tomb[ i ] (a tömb i-edik eleme). A for ciklus fej részébe nem kell '';'', a do kulcsszó után egyből begin, vagy az egyetlen egy db utasítás vagy vezérlési szerkezet kell.
    Tegyük fel, hogy ez megvan, feltöltötted a tömböt.
    Ezután az a dolgod, hogy bekéred az irányt, az ''irany'' változót string típusúnak deklaráltad, az egyszerűség kedvéért maradjon így. Bekéred az ''irany''-t, majd if irany:=l then ... elágazással próbálkozol, mely hibás. Pascalban a '':='' jel a legyen egyenlő-t jelenti, melyet értékadásra használhatsz (pl x:= y). Ha összehasonlítasz valamit (itt iranyt az L-lel), ahhoz összehasonlító operátorra van szükséged, az egyenlőségvizsgálathoz ''='' jelet kell használnod '':='' helyett. Van még egy másik probléma is, mégpedig az, hogy a stringeket, karaktereket ' ' közé tesszük. Helyesen tehát ez a sor: if irany='l' then.
    A s:=tomb ; sor is hibás, a fentebb említett okok miatt, mivel ''tomb'' az egy tömb, ezért ha egy elemére hivatkozol, meg kell adnod az indexet, hogy épp melyikre, mert anélkül értelmetlen. Innentől egyébként eléggé hiányos, és egyáltalán nem jó a kód.
    Tehát eldőlt, hogy ''le'' vagy ''fel'', ezekután át akarod rakni a megfelelő tömbelemeket eggyel kisebb vagy nagyobb helyre, egy s segédváltozó segítségével (ami egyébként kiküszöbölhető kis gondolkodással). Viszont itt nem használtál ciklust, szóval maximum egy-egy elemet tudnál megcserélni, és azok sem a megfelelőek. Amúgy sem cserére van szükséged igazából.
    A length függvény stringeken van értelmezve, azok hosszát adja meg, tömb elemszámának meghatározására nem használható, ezt mintha egy másik nyelvből vetted volna át ;]

    [Szerkesztve]

  • bcs

    aktív tag

    válasz Sátánné #1040 üzenetére

    szia,

    elsőre ránézésre a következő hibákat találtam:

    readln (tomb );

    ha array-be akarsz írni, akkor meg kell adni, hogy melyik elemébe.


    s:=tomb ;
    tomb [length (tomb)+1-i]:=s;

    ezek nem fognak semmit csinálni, mert s integer, tomb pedig array.


    writeln ('az új tömb: ',tomb);

    ez sem fog működni, mert a tömböt elemenként lehet csak kiíratni.

    illetve nem igazán értem, hogy miután fel lett töltve a tömb, mit szeretnél csinálni.

    [Szerkesztve]

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