Kezdőoldal » Számítástechnika » Programozás » Hogyan kéne megcsinálni ezt a...

Hogyan kéne megcsinálni ezt a tömbös feladatot? (lent)

Figyelt kérdés

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.



2019. okt. 26. 01:16
1 2
 1/11 A kérdező kommentje:
Azt kihagytam, hogy C-ben.
2019. okt. 26. 01:22
 2/11 anonim ***** válasza:
Semmi mallocos varázslás nem kell, pont attól nagyon könnyű a feladat, hogy "legfeljebb 21".
2019. okt. 26. 02:18
Hasznos számodra ez a válasz?
 3/11 A kérdező kommentje:
Oké, de akkor mégis hogyan? Mert ehhez gondolom dinamikus tömb kell (persze lehet, hogy nem), mivel nem mindig egyforma a mérete. Ha csinálok egy sima 21 elemű tömböt for ciklussal, az nem jó.
2019. okt. 26. 11:17
 4/11 anonim ***** válasza:
Miért nem jó?
2019. okt. 26. 11:44
Hasznos számodra ez a válasz?
 5/11 A kérdező kommentje:

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.

2019. okt. 26. 12:05
 6/11 anonim ***** válasza:

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).

2019. okt. 26. 13:59
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:

Köszi, módosítottam a kódot, de továbbra se jó.


[link]


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.

2019. okt. 26. 14:56
 8/11 anonim ***** válasza:
Kapcsos zárójelek terén is nézz körül, szerintem az első ifnél elcsúsztál :) A második ciklusod végtelen ciklus lesz, mivel az i-t csökkented, ezért folyton kisebb lesz, mint 21. Ott változasd meg a ciklusfeltételt.
2019. okt. 26. 15:17
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:

Köszi, most már karnyújtásnyira vagyok a megoldástól.


[link]


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.

2019. okt. 26. 16:09
 10/11 anonim ***** válasza:
Hallod, magadtól/egyedüp tényleg egy kib#szott lépést sem tudsz megtenni?
2019. okt. 26. 17:04
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!