Segítene valaki ebben a programozási feladatban? Ha lehet rávezetéssel vagy magyarul megfogalmazva a megoldást. (A többi lent)
("Tölts fel egy egészeket tartalmazó 100 elemű tömböt a [-500; 500] intervallumból. Válogasd ki egy "egyforma" nevű tömbbe azokat számokat, melyek egyforma számjegyekből állnak.")
Úgy próbáltam, hogy a tömb i-edik elemét átváltom Stringre földarabolom egy tömbbe a karaktereit majd összehasonlítom a tömb többi elemével de nem nagyon jött össze. De 100%, hogy túl bonyolítom és egyszerűbben is meglehet oldani. Erre várnék egy kis segítséget/kezdő lökést!
Szerintem ez annyira nem túlbonyolítás, elég természetes ötletnek hangzik, működnie kell.
Esetleg olyat tudsz csinálni, hogy veszed a 10-es osztási maradékát a számnak, majd ezt kivonod a számból, aztán veszed a 100-as osztási maradékának a 10-edét (a sima maradékot kivonod a számból), majd az 1000-es oszási maradákának a 100-adát..., és így szép sorban visszakapod a számjegyeket, és így a stringeket ki lehet kerülni. Nem tudom ez mennyivel elegánsabb, de most hirtelen csak ez jutott eszembe.
Utolsó számjegy: x%10,
ha abszolút értéke>=10 utolsó előtti számjegy:
((x%100)-utolso)/10
ha abszolút értéke>=100 első számjegy: x/100.
A / az egész osztást jelenti, a % a maradékos osztást. X helyett meg mindenhol x abszolút értéke legyen.
Köszönöm mindenkinek az eddigi segítséged eddig idáig tudtam eljutni. 2 gond van még vele, hogy ha például 200 a szám akkor a 20-at nem adja ki íratja ki. És a másik gond, hogy olyanokat is ki ír ami nem is azonos vele, tudom, hogy az a gond, hogy || al van megoldva és az miatt van ez de nem tudom, hogyan lehetne máshogy. Ezekben a kérdésekben kérnék még tőletek segítséget.
Java-hoz nem értek de python-ban itt egy megoldás pl: [link]
Úgyis a gondolatmenet a fontos.
A lényeg, hogy a stringes megoldást használom. A számot stringé alakítom, aztán azokból csinálok egy halmazt, amit rendezek, és végül egy stringgé összefűzöm őket. És ilyenekből csinálok a szótáraknak kulcsokat.
Látható, hogy pl a 200 és 20 ugyanazzá a szótárkulccsá redukálódik az előbbi algoritmus alapján, mégpedig a '02' string lesz belőle. Ehhez a szórárkulcshoz tartozik egy halmaz, és oda gyűjtöm az elemeket, amik ide tartoznak. És például a 41-ből, meg a 144-ből ugyanúgy a '14' szótárkulcs keletkezik, így ezek is egy helyen fognak gyűlni.
Annyi még, hogy, ha a szám negatív, akkor a kulcskészítés után az elejéből le kell vágni a negatív előjelet, így a -312 ugyanoda kerül, mint a 231 mondjuk.
És ez a megoldás elég skálázható, sehol nem használtam ki, hogy milyen számokkal dolgozok, akármilyen intervallumról jöhetnek.
Remélem érthető voltam, ha nincs python interpretered, akkor ezt pl. tudod használni, és akkor láthatod is működésben: [link]
[Sóhajtós szmájli]
No szóval elsősorban pár nüansz
* kódfeltöltő oldalt említettem, nem képfeltöltőt - így nehezebb a hibajavítás
* nem a topiknyitó kérdésben szereplő "átváltom Stringre földarabolom"-metodikát mutattad be
* a változó-/függvény-/osztályneveknél: 1. kerüld az ékezeteket (nem minden programnyelv támogatja, rossz beidegződéshez vezet - pláne lásd a 2. pontot), 2. kerüld a magyar neveket (gyakorlásnál vagy hazai fejlesztésnél még jó, de ha nemzetközi fejlesztéseknél zavaró a fejlesztőtársaknak), 3. használj "camelCase" (osztályneveknél "CamelCase") formátumot
a fő problémák:
* A véletlenszám-generálás el lett bonyolítva - leegyszerűsítve:
tomb[i] = (int) (Math.random() * 1001 - 500);
* Nem a tömb adott elemének számjegyeit hasonlítod össze (ezzel lennének kiszűrhetőek azok a számok, "melyek egyforma számjegyekből állnak"), hanem a tömb első elemének számjegyeit a tömb adott elemének számjegyeivel - felesleges bonyolítás, ráadásul nem ez volt a feladat
Itt egy példa a megvalósításra:
megjegyzem, hogy ezt persze lehetne szebben, de gyakorlófeladatról van szó.
1.* Igen már láttam ezt belátom.
2.* Mivel valaki más írta ezt a megoldást és sokkal könnyebbnek egyszerűbbnek éreztem ezt a megoldást. De ebben is igazad van.
3.* 1.-t és a 2.-at az iskolában így tanítják, ez ma magyarországon az informatika oktatási rendszer, azt tanítják, hogy magyar neveket használjunk mivel magyarok vagyunk, és ékezeteket mivel az UTF-8 úgyis mindent felismer.
4. Ezt is így tanítják az iskolában, de nekem ez így könnyebb is sokkal szóval ezt a tanácsod nem fogadom meg.
5. Ebben igazad van, megpróbálkozom vele.
#7/3. Mint írtam, a magyar, ékezetmentes függvény-/osztály-/változónevek gyakorlófeladatban - így az iskolában is - vagy hazai fejlesztésnél még "elmennek", de az ékezetek mindenképpen ellenjavalltak: főként a klasszikus, fordított nyelvekben (C/C++/Pascal) a fordítóprogram nem fogja lefordítani a kódot, és ilyen hibaüzenetekkel örvendeztet meg bennünket - például:
gcc (C/C++) esetén: "error: stray ‘\303’ in program"
fpc (Pascal) esetén: "Fatal: illegal character "'�'" ($C3)"
Az ékezetmentességet általános-/középiskolás/felsőfokú tanulmányaim folyamán mindenhol így tanultam, amikor fiatalokat készítettem fel, akkor is így oktattam; informatikát oktató tanárismerőseim (vannak egy jó páran) is e szerint járnak el - szóval az függvény-/osztály-/változónevek ékezetes használata nem elterjedt az iskolai oktatásban (pláne hogy az "iparban" sem).
#7/4. Nem hinném, hogy a camelCase ellenjavallt lenne az iskolában.
Sőt: ipari - de facto' - "sztenderd":
megkönnyíti a változók/függvényok/osztályok nevének olvasását - pláne ha hosszúak.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!