Hirdetés
- Milyen Android TV boxot vegyek?
- AMD Navi Radeon™ RX 9xxx sorozat
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Samsung LCD és LED TV-k
- Internet Rádió építése (hardver), és programozása
- Sony MILC fényképezőgépcsalád
- Kormányok / autós szimulátorok topikja
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Lenovo Thinkbook, Yoga széria
- Vezetékes FEJhallgatók
Ú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
- LG 45GS95QE - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- HP EliteOne 800 G5 All-in-One i5-9500 32GB 1000GB 23.8" Érintőkijelző!! 1 év garancia
- Új Razer 16 QHD+ OLED 240Hz i9-14900HX 24mag 32GB 2TB SSD Nvidia RTX 4090 16GB 175W Win11 Garancia
- Konzol felvásárlás!! Playstation 5, Playstation 5 Pro
- Gamer PC-Számítógép! Csere-Beszámítás! Ryzen 5 8400F / 32GB DDR5 / RX 7800XT 16Gb / 1TB SSD!
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest