Kezdőoldal » Számítástechnika » Programozás » Hol van a hiba ebben a megirt...

Hol van a hiba ebben a megirt kodban?

Figyelt kérdés

C nyelvben irtam egy kodot ennek a feladat megoldasara( [link] ,de nem mukodik

Megirt kod illetve hibauzenet

[link]

[link]

[link]


2016. szept. 28. 22:30
1 2
 1/13 anonim válasza:
71%

en csakk annyit latok hogy az nem


main{}

{

}

hanem


main()

{

}


kerek zarojellel es szinten nem climbstair{} hanem climbstair() kerek zarojellel

2016. szept. 28. 22:33
Hasznos számodra ez a válasz?
 2/13 anonim válasza:
33%
remelem nem valami troll vagy mert reg nevettem ilyen jot XD
2016. szept. 28. 22:34
Hasznos számodra ez a válasz?
 3/13 anonim ***** válasza:

#1

Totál igazad van. Ha nem nagyítok rá fel sem tűnik...


(szinte) mindenhol ahol {} használtál ezt kellett volna: ()

2016. szept. 29. 00:55
Hasznos számodra ez a válasz?
 4/13 tabaki ***** válasza:

Azért az legyen világos, hogy ez tulajdonképpen egy „Karel-nyelv”, ami csak nyomokban hasonlít a C-re. A ténylegesen C nyelvű rész előled rejtve, egy másik fájlban van, amelyet a kód elejére írt #include "karel.h" sorral építesz be a programodba. Itt vannak megírva a Karel tanulóprogram utasításai, függvények formájában. A Karel-programod tehát C függvények meghívásának sorozata, ezért is kell tartanod magad a C szabályaihoz. A C-ben a függvények hívásakor mindig ki kell tenni közönséges zárójelpárt a függvény neve után -- ezek között lehetne átadni a szükséges adatokat, de ha ilyenek nincsenek, a fordító akkor is megtudja belőlük, hogy a függvények közt kell keresgélnie, nem csak valami ottfelejtett szövegszemetet talált. Ez a szerepe tehát az utasításokat követő, számodra tulajdonképpen fölösleges sima zárójelpároknak. A kapcsos zárójeleknek más a feladatuk. Te magad is építhetsz föl saját függvényeket, amelyek utasítások sorozatából állnak. A fordítónak tudnia kell, hogy mely utasítások tartoznak a függvényhez, ezért a sorozat elejét és végét jelzed a kapcsos zárójelekkel.


Vagyis: A Karel nyelv elemi utasításai egy függvénynévből és a kötelező SIMA zárójelből állnak, például movek(), turnLeft(), pickBeeper(). Világos, hogy itt követted el a hibát: KAPCSOS zárójeleket használsz, tehát a fordító szempontjából nézve

1. Ott van egy szöveg, amelyikről nem lehet tudni, mi a fene. Rendes függvény nem lehet, hiszen nincs utána ().

2. Utána meg ott van egy üres utasításblokk, amely nem tartozik sehova, pedig egy függvény kellene elé.


Példa a saját függvényre:

A robot csak balra tud fordulni, a turnLeft() függvényhívással. Ezt a fogyatékosságát orvosolod a turnRight() saját függvény létrehozásával, amely háromszor balra fordítja, ezzel ugyanazt az eredményt éri el. Szerintem így a legelején még értelemzavaró lehet, hogy a turnRight() milyen szépen illeszkedik a többi utasítások logikájába -- a meg nem értésére utal, hogy a kód másolásakor elfelejtetted lezárni a blokkot. Vedd észre, hogy a turnRight() NEM része a nyelv kész elemeinek, ezért ezt a függvényt egyéb néven is létrehozhatnád, pl.:

void Jobbra(){

        turnLeft();

        turnLeft();

        turnLeft();

}

Ezek után a Jobbra(); ugyanúgy működne, mint eddig a turnRight();


Talán érdemes még egy kissé felfejteni az if() működését is, mivel az összevissza kapcsos zárójelek tanúsága szerint ez sem tiszta előtted. A programodban látható esetben az alapszerkezete a következő:

if(feltétel){teendők}

Tehát az if() sima zárójelpárja most nem marad üresen, hanem kapnia kell egy adatot, amelynek alapján dönthet, hogy elvégezze-e a kapcsos zárójelek közt felsorolt utasításokat. Értelemszerűen a feltételnek egy igaz vagy hamis eredményt adó műveletnek kell lennie. Ebben az esetben egyetlen teendő van: A bigyó felvétele, vagyis a pickBeeper() utasítás elvégzése -- bigyónak azt a tökmindegymicsodát nevezem, amit Karel gyűjtöget. De mi a feltétel? A Karel-nyelvben létezik egy beepersPresent() függvény, amelyik azt vizsgálja, hogy a robot közelében van-e felvehető bigyó. Ha igen, akkor igaz, ha nem, akkor hamis értékkel tér vissza. Az if() paramétereként tehát ezt a függvényt adod meg, így amikor a program elvégzi, az if() a kapott érték alapján dönthet:

        if(beepersPresent()){pickBeeper()}

Magyarul:

        Ha a „van-e bigyó a közelben” kérdésre igen a válasz, vedd föl a bigyót.

Félmagyar-félKarel keveréknyelven:

        if(vanBigyó()){veddFelABigyót};

2016. szept. 29. 01:17
Hasznos számodra ez a válasz?
 5/13 tabaki ***** válasza:

+ Khm... a veddFelABigyót() ugyanúgy függvény, mint a többi, tehát az után is kell a sima zárójelpár:

if(vanBigyó()){veddFelABigyót()};

Bocs.

2016. szept. 29. 01:24
Hasznos számodra ez a válasz?
 6/13 anonim ***** válasza:
Ez az egész kód egy nagy hiba.
2016. szept. 29. 08:31
Hasznos számodra ez a válasz?
 7/13 tabaki ***** válasza:

Na, még két megjegyzés:

Hasztalanul kerestem az általad használt Karel-tájszólás offline változatát, ezért lehet, hogy a technikai alapjai mások, mint ahogyan írtam. Mivel azonban ezt a verziót kifejezetten a C nyelv oktatására hozták létre, a formai követelmények szempontjából igazak a fentiek.

A Karelt sok programnyelv oktatására megírták, ilyenkor természetesen az utasításai az adott nyelv megoldásaihoz igazodnak. Van többféle önállóan futó változata is, szintén eltérő nyelvi elemekkel.

2016. szept. 29. 11:40
Hasznos számodra ez a válasz?
 8/13 tabaki ***** válasza:

@#6:

Szerintem légy elnézőbb... Ez egy gyerekeknek szánt, alig néhány utasításból álló nyelvecske, tulajdonképpen az a feladata, hogy azonnal valami érdekesebb történjen a képernyőn, mint a helló világ vagy két szám összeadásának a kiírása. Mivel a tényleges C-alapok hiányoznak, Kérdező nem tudta, mi az értelme a zárójeleknek. A példák alapján megpróbálta pontosan bemásolni a kódot, és nem sikerült. Nagy ügy, legközelebb jobban megy majd.

2016. szept. 29. 12:01
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:
Köszönöm a válaszokat!Holnap részletesebben elolvasom az összeset illetve megpróbálom a kódban is.Jelenleg most kezdtem el informatika szakot Szlovákiai egyetemen és ott tanítják ezeket ,mint bevezetés a programozásba.A fenn linkelt kód azt másoltam le ,amit a tanár írt fel a táblára és nem meglepő akkor,hogy senkinek sem volt jó.
2016. szept. 29. 22:13
 10/13 anonim ***** válasza:
#9 Biztos csak rondán írt, messze ültetek, stb, ezért nem tűnt fel a különbség.
2016. okt. 2. 17:12
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!