Hogyan kéne ezt a függvényt megcsinálni C-ben? (lent)
Készítenem kell egy függvényt kereso néven, ami megkapja lakas típusú adatok egy tömbjét (a mérettel együtt), és visszatér az első olyan adat indexével, amelyikben a jelenlegi lakók száma 2 és 5 között van (a határokat is beleértve). Ha nincs ilyen, akkor a függvény -1-gyel térjen vissza.
A struktúra definíciója:
struct lakas
{
unsigned int hazszam;
int epites; // építés éve
unsigned int lakok; // jelenlegi lakók száma
unsigned int szobak; // szobák száma
};
A függvényt meghívó kód:
printf("%d\n", kereso(tomb, 9));
Ennyit tudunk a teljes program kódjából. Igazából az a fő baj, hogy nem tudom egy tömbbe berakni a struktúra változóit. Próbáltam tömb nélkül megoldani, de úgy nem ismeri fel a struktúrát és amúgyse stimmelne a kiiratás.
"Igazából az a fő baj, hogy nem tudom egy tömbbe berakni a struktúra változóit."
Miért akarnád a struktúra változóit egy tömbbe rakni? A struktúrát kell a tömbbe raknod, nem annak a változóit:
Megcsináltam a függvényt.
Biztos lehetne rövidebben is. Lefut, de mindenhol az else ág értékét adja vissza, jelen esetben a -1-et. Akkor is, ha csak az utolsónál van else ág.
Kicsit jobban olvasd át a ciklusokat. Lényegében csak annyit felejtettél el, hogy mire való a ciklus. A ciklusokkal kollekciókon tudsz végigmenni. Ezt úgy, hogy használod az index változód - jelen esetben az i -, hogy hivatkozz a kollekció egy elemére. A kollekciód pedig most egy tömb volt.
Indexelés 0-tól indul. Tehát, ha 10 elemű a tömböd, annak az első elemét a 0. index jelöli, te a kódod végén kicímeztél a tömbből.
elem: 1 2 3 4 5
index 0 1 2 3 4
Javaslom a hibaüzenetek tanulmányozását még. Kezdőként legtöbbször a tömbből való kicímzés, null referenciára való hivatkozás és az elírt változónevek,
útvonalak, stb fordulhatnak elő. C-ben nem tudom pontosan, hogy a fordító ezeket minek nevezi, de ezért tanulmányozd őket. :) Rontsd el szándékosan a működő kódot és nézd meg milyen üzenetet kapsz. Következő alkalomkor már tudni fogod pontosan a hiba okát.
Köszi, a hibaüzeneteket szoktam nézegetni és rájuk keresni. Bemásoltam a kódod, de továbbra is -1-et ad mindenhol (sikerült 0-t is elérnem, de azzal nem vagyok sokkal előrébb).
"Bemásoltam a kódod"
Csak úgy? :D Nálam működik, visszaadja helyesen az indexeket.
Kezdjük azzal, hogy te a képen mindenhol 9 lakás adatot adsz meg a 10 helyett. Ha csak bemásoltad a kódot, akkor már eleve helytelen, mert meg kell változtatni a méretét a tömbnek (beleértve a ciklusok feltételét is).
Nem tudom milyen fejlesztőkörnyezetet használsz, de ha nem egy sima szövegszerkesztő, akkor debugolj. Ez is egy fontos dolog. Tegyél breakpointokat (VisualStudio F9) a kód különböző soraiba és nézd meg, hogy a változóidnak milyen értéke van. Nézd meg, hogy az adott feltételnek teljesülnie kell-e, és ha nem, akkor miért nem teljesül, stb.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!