Hogyan oldanátok meg ezt a problémát?
Nem nehéz, de mégis kifog rajtam. Van működő kódom.
A feladat az, hogy két számot bekérek és ki kell adnom minden közéjük eső számot, ami 10el osztható.
Ez nagyon könnyű. Egy while ciklusba egy ilyen felétellel "lowerNumber + 1 < higherNumber" végig megyek a lehetséges számokon és ha 10el osztható kiírom.
... de a feladatban az is benne van, hogy nem tudhatom melyik számot adják meg. Magyarul előtte ellezőriznem kell melyik melyik, de a saját logikámmal csak arra jutottam, hogy egy if else blocban ellenőrzős és ugyan azt a while ciklust leírom így kétszer a kétféle esetre.
Ami igaz kezdőként is, de nagyon rossz ötletnek hangzik, mert ugyan azt a logikát 2x fogalmazom meg.
Tudom ha egy külön methodot írnék, aminek 2 argumentuma van, akkor már szelektálva tudnám beadni a számokat és nem lenne ilyen problémám :D, de nem használhatok függvényeket, csak a Mainbe hányhatok be minden kódot, mert még nem tartunk ott a tananyagban.
A fő problémád ugyebár:
"de a feladatban az is benne van, hogy nem tudhatom melyik számot adják meg"
Bekéred a két számot - legyen mondjuk sorrendben "first" és "second", majd.
if (first > second) {
lowerNumber = first;
higherNumber = second;
} else {
lowerNumber = second;
higherNumber = first;
}
innentől meg leírtad: végigmész a lowerNumber -> higherNumber tartományon és eldöntöd, hogy osztható-e 10-el - ha igen, kiírod.
1# Nem érted a problémám.
2 fajta ciklus lehetséges így lényegében ugyan azt lekéne írtam 2x meglehet oldani szebben method használata nélkül?
Most így oldottam meg. Ez szerintem normálisan nézki, de nem használhatom a methodokat.
2# Köszi. :D Wow ... pedig ugyan ezt csináltam ... Bocs, nem láttam a kommentedet, amikor az elsőnek írtam.
Ment a like.
Talán objektív de nekem ez a megoldás valamivel elegánsabbnak tűnik:
A cserénél nincs akkora tömeg(ha megismerkedtél a pointerekkel, akkor egy swap(int *a, int *b) függvény még átláthatóbbá teheti).
Ami viszont lényegesebb: nem végez el 9 fölösleges összehasonlítást mire a 10.-nél megtalálja azt a számot amit ki kell írnia.
Ha kiszámolod, hogy melyik az első legközelebbi 10 el osztható szám, akkor csak 10 el kell ugrálnod felfelé.
Remélem segítettem ;)
A általad linkel képen van még egy furcsaság. A while ciklusodban miért (lower +1 < higher) feltétel van?
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!