Hogyan kéne megcsinálni ezt a tömbös feladatot? (lent)
Készítenem kell egy programot, ami egész számokat kér be egy tömbbe, legfeljebb 21 darabot.
A számok bekérésének le kell állnia, ha elérte a maximális mennyiséget, vagy a következő végjel értékét: -106
A bekérés után a programnak meg kell jelenítenie a tömbben eltárolt elemek számát, majd alá egy sorba a tömb elemeit fordított sorrendben.
Itt az a trükk, hogy LEGFELJEBB 21 darabot kér, így gondolom a sima for ciklusos bekérés ide kevés. Figyelem! Lehet, hogy hülyeségek következnek. Elvileg malloc-okkal és pointerekkel kéne, de ha van egyszerűbb módszer, örülnék neki (sima, de nagyon sok elemű tömbbel nem sikerült működésre bírnom). Megpróbáltam egy internetes példakódot átírni, de nem igazán jön ki eredmény. A tömbben eltárolt elemek száma elvileg ez: int tombelem = sizeof(tomb) / sizeof(tomb[22]); ezt be kell ágyazni a kódba. A fordítva kiiratás is talán pointeres lehet.
Kiiratásból egyelőre csak rendes sorrendűt tudtam csinálni, de azt fordítva kell. Sima 21 elemű tömbbel jelenleg így néz ki: [link]
A kód így lefordul és kiír számokat, de nagyrészt hülyeségeket.
if ((i==21 || tomb[i]==-106)) -> az i == 21 felesleges, mivel a for ciklusod alapból megáll 20 fölött.
int tombelem = sizeof(tomb) / sizeof(tomb[21]); -> Ez szerintem C-ben mindig 21-et fog visszaadni, mivel az a tömb mérete. Neked nem ez kell, hanem az, hogy mennyi elem van feltöltve a tömbödbe. Tudod, hogy hány elem van a tömbödbe - annyi, ahányszor lefutott a fenti ciklusod (i darabszor).
A kövi dolgod már csak az, hogy visszafelé kiírasd. Ez nem nehéz. A kövi ciklusváltozót nem nulláról kezded, hanem ahány tömbelemed van, és nem előre, hanem visszafele lépkedsz. Nyilván itt figyelned kell, hogy a ciklusváltozó ne i legyen, mert az tárolja le azt, hogy hány elemed van feltöltve. Persze csinálhatsz egy-két változtatást a változókban, és akkor jobban átlátható lesz (mondjuk a felső i elemét elmented egy elemekSzama változóba és azzal dolgozol).
Köszi, módosítottam a kódot, de továbbra se jó.
Az eltárolt elemek számához 0-t ír, a tömb elemeiből megjeleníti az elsőt és utána meg random számokat. Második próbálkozásra meg már csak "Segmentation fault (core dumped)" üzenetet dob.
Köszi, most már karnyújtásnyira vagyok a megoldástól.
Az elemek számát rendben kiírja. A tömb elemeit is visszafelé, de úgy, hogy az első elemhez kerül egy random szám és az utolsó elem kimarad. Így viszont még nem fogadják el.
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!