Kezdőoldal » Számítástechnika » Programozás » Valaki tud-e segíteni a...

Valaki tud-e segíteni a következő C program megírásában?

Figyelt kérdés

2 hete tanulom a programozást, ezt a házit kaptuk és nem tudok rájönni, hogy kellene nekifognom.


A feladat:


A hupikék törpikék kirándulni mentek, és Dulifuli beleesett egy gödörbe. Természetesen nem kiáltott segítségért, hanem egyedül akart kimászni. Első lendülettel felmászott 10 törparaszt, majd lenézett, és lecsúszott, méghozzá az eddig elért magasságának 10%-t (tehát 9 törparasz magasságban sikerült megkapaszkodnia). Ekkor másodszor is lendületet vett, 20 araszt mászott, majd megint lenézett, és megint visszacsúszta az addig elért összmagasságának a 10%-át. És így tovább, minden lenülettel 10 arasszal többet mászott felfelé, de minden megállásnál az addigi összmagasságának 10%-át elvesztette.

Írj függvényt, melynek paramétere a gödör mélysége (törparaszban), és egy egész értékkel tér vissza: azzal, hogy Dulifuli hanyadik lendülettel mászott ki a gödörből.


A feladat utasítása szerint fixen így kell elkezdenem:


int hanyadiklendulet(int cel);



2021. szept. 25. 18:28
 1/9 Pelenkásfiú ***** válasza:

Először is kell két int változó.

Az egyikben tárolod, hogy épp milyen magasan jár. Ez nyilván 0-ról indul.

A másikban számolod, hogy ez hanyadik lendülete.

int m = 0; // magasság

int c = 0; // count

Úgy nevezd el őket, amiből neked egyértelmű!


Utána egy while ciklusban azt mondod, hogy:


while (m < cel) {


}


A ciklusban nyilván lesz egy "c++". (ami ugye "c+=1" vagy "c = c + 1")

Ez majd segít abban is, hogy a 10, 20, 30, ...-at hozzáadd a magassághoz


Így megpróbálod?

2021. szept. 25. 18:33
Hasznos számodra ez a válasz?
 2/9 Pelenkásfiú ***** válasza:
Bocsi, a magasság az nem int, hanem float vagy double, mert a visszacsúszás nem egész szám, hanem százalékos érték.
2021. szept. 25. 18:35
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
Köszönöm, megpróbálom utána jelzek.
2021. szept. 25. 18:37
 4/9 Pelenkásfiú ***** válasza:
Egyébként do ... while()-al egyszerűbb/szebb.
2021. szept. 25. 18:46
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

Hát egyelőre a while()-al se tudom hogy fejezzem be. Nem nagyon használtunk még érdemben semmit csak scanf, printf, esetleg if, de többiről csak elvétve szó volt.


Lehet teljesen marhaság, de ezt sikerült írni, viszont az X helyére nem tudom mit kéne írnom, már ha egyáltalán ez így jó:


int hanyadiklendulet(int cel) {

float magassag = 0;

int lendulet = 0;

while (magassag < cel) {

magassag = magassag + X * 0.9

lendulet = lendulet + 1

}

return lendulet;

}

2021. szept. 25. 18:52
 6/9 Pelenkásfiú ***** válasza:

lendulet = lendulet + 1;

magassag = magassag * 0.9;

magassag = magassag + lendulet * 10;


Ez rövidebben:

lendulet++;

magassag *= 0.9;

magassag += lendulet * 10;

2021. szept. 25. 19:07
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:
Ohh hogy erre nem gondoltam, működik is. 5/5 pont lett. Nagyon szépen köszönöm a segítséget!
2021. szept. 25. 19:28
 8/9 anonim ***** válasza:
50%

"Nem nagyon használtunk még érdemben semmit csak scanf, printf, esetleg if, de többiről csak elvétve szó volt."


Hát nem tudom... Tény, hogy vannak gyökér tanárok, de az is érdekes, hogy valahányszor itt házi feladattal kapcsolatban kérdést tesznek fel, mindig hozzáteszik, hogy hát szó sem volt még csak hasonlóról sem. Aztán az esetek többségében kiderül, hogy volt azért róla szó, csak épp más online tevékenységek izgalmasabbnak tűntek, mint a tananyag. ;)

Nem feltételezek rólad rosszat, csak úgy megemlítettem, hogy nem feltétlenül mindig a tanár a szemét.

Tényleg nem piszkálásból írok, inkább csak tanácsokat szeretnék adni.

Ha ilyesmiket tanulsz, akkor valószínűleg szakgimis vagy, vagy gimi faktos, aki emelt érettségire készül. Más körülmények között a C nem gyakran szokott előfordulni, esetleg csak Arduino-szakkörökön. Szóval feltételezhető, hogy terveid vannak az informatikával, ebből adódóan nem szabad hanyagul hozzáállni!

A programozás nem olyan, mint a történelem, vagy az irodalom. Ott ha nincs kedved megtanulni Balassi Bálint életét és munkásságát, akkor sem dől össze a világ, legfeljebb szerzel egy darab karót, de semmi nehézséged nem lesz a következő témában. A programozásban ez a legritkább esetekben van csak így. Főleg az elején. Ha te elveszíted a fonalat, amikor a változókat, meg az alapvető vezérlési szerkezeteket tanuljátok, akkor ameddig azt be nem pótolod, nem fogsz tudni érdemben haladni. Sokan pont ezért buknak bele. Nem tanulják meg, mondván majd dogára felkészülnek, de mivel az így kihagyott tudás szükséges az utána következő ismeretek megértéséhez, ezért azt sem fogják érteni. Ezen a ponton vagy hatalmas önszorgalommal bepótol mindent, és képes lesz haladni a csoporttal, vagy már most elkönyvelheti az év végi bukást. Kicsit olyan ez, mint alsóban. Ha nem tanultad meg a számjegyeket matekból, akkor utána az összeadásból sem volt esélyed még kettesre sem. A tanár meg nem toporzékolhat egyetlen témánál addig, ameddig mindenki méltóztat a lustaságán felülkerekedni, és azt megtanulni.

A programozás olyan szempontból sem hasonlít például a történelemre, hogy itt muszáj érteni a dolgokat. Persze, ez más tantárgyaknál is előnyös lenne, de ennek ellenére vannak, ahol jó emlékezettel és kellő szorgalommal úgy is egész jó eredményeket érhetsz el, ha semmit nem értesz belőle. (Az már egy másik kérdés, hogy én így nem sok értelmét látom.) Na, a programozás nem ilyen. Attól, hogy beverklized, hogy mi az a változó, meg mi az a ciklus, még nem fogsz tudni programot írni. Ez pont arról szól, hogy gondolkodj.

És pont ezért van az, hogy néha olyan feladatot is kaptok, ami "új". Ez egy alkotó jellegű szakma, ahol a semmiből kell valamit teremteni. Ehhez az eszközöket megkaphatod, de az alkotást magát neked kell véghezvinned. Ezt nem lehet készen tálalni, mint IV. Károly életrajzát. Érteni kell, átlátni, és alkalmazni. Annak semmi értelme nem lenne, ha ugyanazt meg kellene csinálni házi feladatnak, mint amit készen a tanár odaadott. Azért kaptok ilyen feladatokat, hogy gondolkodjatok. Meg persze ha szükséges, akkor az információkeresést is gyakoroljátok. Ha pedig sikerült átgondolni, akkor lehet az algoritmust, és végső soron a programkódot megalkotni.


"viszont az X helyére nem tudom mit kéne írnom"

Ez azt jelenti, hogy nem érted, amit csinálsz. Ilyenkor kell újra nekiállni átgondolni, hogy mit hogyan, és miért szeretnél. Nem, ez nem egy 5 perces meló. Lehet, hogy órákon át kell agyalnod, mire rájössz. De ezt más nem teheti meg helyetted. Persze, elárulhatja a megoldást, de azzal csak azt éri el, hogy ezt sem értetted meg, és a következő feladatoknál még nagyobb problémáid lesznek.


És végül: tessék jegyzetelni!

Tudom, informatikában ez nem divat. Mert hát "jaj, milyen ciki, hogy előveszem a füzetem, miközben ott ülök a gépnél". Nem, nem az. Persze, gépen is lehet jegyzetelni, de a tapasztalatom az, hogy ezt a többség nem veszi komolyan, illetve nem rendszerezi. A vége az lesz, hogy nem jegyzetel, ha pedig kéne valami ismeret, amiről már szó volt, akkor azt nem fogja tudni alkalmazni, és szidja a tanárt, hogy "hát volt ilyen, de épp csak megemlítettük". Oké, és akkor hol is van lejegyzetelve, hogy mit említettetek meg? ;)

2021. szept. 25. 20:19
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:
34%

Ha valaki feltesz úgy egy kérdést, hogy csak copy-paste-eli a feladatot anélkül, hogy bármi saját ötletet vagy kísérleti programkódot megosztana, az egyértelműen azt jelenti, hogy a kérdezőt abszolút hidegen hagyja a programozás, és annyira lesz_rja a témát a saját lustasága miatt, hogy idejön, hátha talál egy balekot, aki megcsinálja neki ingyen. Közben pedig sajnos az élet ilyen. Vannak dolgok, amiket utálunk, de muszáj megcsinálni. Ez is ilyen. Aztán úgyis elfelejted örökre (legalábbis ezzel a hozzáállással esélytelennek tartom, hogy szoftverfejlesztőként képzelnéd el a jövődet).


Kedves kérdezőben még annyi korrektség nincs, hogy leírja nekünk, hogy "bocsi srácok, engem ez k_rvára nem érdekel, de nem akarok emiatt megbukni, lécci csináljátok meg helyettem". Helyette teszi az agyát, hogy "a tanár b_szik tanítani", miközben oda se figyelt az órán. Érett, felnőtt viselkedés, gratulálok hozzá!


Nincs semmi baj azzal, hogy velünk akarod megcsináltatni a feladatodat, de azok, akik a saját idejüket és energiájukat szánják rá arra, hogy kihúzzanak téged a sz_rból, még annyit sem érdemelnek meg, hogy őszinte legyél velük?


Ja, és ezt nyugodtan veheted piszkálásnak.

2021. szept. 25. 20:48
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!