Mi a baja a programnak?
A feladat, hogy beolvasunk be egy tömböt, majd a tömb palindrom számaiból alkossunk egy újabb tömböt. A végén mindkettőt írjuk ki.
Töltsd fel pastebinre mondjuk a kódot és azt linkeld.
Illetve leírhatnád bővebben, hogy mi a problémád.
Hibát kapsz futtatáskor? Nem jó az eredmény? Mi nem stimmel?
Némiképp vontatottan halad a társalgás, de legalább volt ideje már-már bizonyossággá érlelődnie annak a gyanúmnak, hogy teljesen félreértetted a feladatot.
„...majd a tömb palindrom számaiból alkossunk egy újabb tömböt.”
Figyelmeztess, ha az én agyvelőm áll csáléra, de nekem az idézett sor semmiképp nem jelenti azt, hogy két előre biztosított statikus tömb között megy az adok-kapok (amelyek közül az egyikben vagy lézeng egy-két szám, vagy sem, de hogy nagyobb részt fölöslegesen foglalja a helyet, az faktum). Azt már inkább, hogy az első tömb adatainak alapján dinamikus memóriafoglalással kéne éppen megfelelő méret helyet biztosítanod a palindromoknak. Föltevésem szerint ez lenne majd a feladat érdemi része, nem pedig a magunk közt szólván eléggé problémátlan palindromkeresés.
Amikor végigmész a beolvasott tömbon (2. for ciklus), az m értékét mindig 0-ra állítod, tehát az eredmény tömbben mindig az első heylre teszed a számot... az za az eredmény tömbben maximum 1 elem "lesz". Ha az utolsó sázm palindomn akkor az.. Ha nem palindtom, akkor "nem lesz benne" elem. (Nyilván benne lesz max 1, de az m 0 lesz).
Másrészt amikor kiirod, hogy az eredeti tömb nem tartalmaz palindom elemet azt nem ott kéne... mert te a vizsgáló cikluson belül teszed, azaz ezt minden nem palindrom elemre kiirja... akkor kéne ezt kiirnod a 2. ciklus után, ha m=0.
Harmadrészt van benne egy typo: palidrom.
Egyébként valóban szebb lenne szövegként megosztanod máskor, de azért ez nem az a kód, amit ne lehetne szemmel átolvasni:)
Illetve mégegy... az m nincs inicializáva csak a cikluson belül... azaz ha n=0, akkor m memóriaszemét lesz.. azaz az utolsó for ciklusnál segfault lesz.
Illetve ha n>100, akkor is gond van, de ez nyilván egyértelmű.
Tabaki hozzászólására annyit, hogy ha adott méretű tömböt szeretne, akkor másold át neki a legvégén egy újabb ciklussal (ha tudod hogy kell dinamikusan memóriát foglalni, mert lehetséges, hogy azt még nem tanultátok, hiszen a kódodban olyan rész egyébként nincs). Én nem hinném, hogy az a lényeg a feladatban.
Nyilván egyedi feltételek alapján lehet gond a memória foglalással, pl ha a feladat úgy hangzik, hogy rengeteg szám van, de csak kevés palindrom akkor érdemes valami dinamikusan növekvő lisátva gyűjteni.
Vagy ha szabad módosítani az eredeti tömböt, akkor ott kiüríteni a nem megfleleő elemet.
Vagy először csak megszámolni, de ezzel meg a futásidő nő..
Vagy ha bonyolítani szeretnéd, használhatsz valami bitsetet, ekkor csak darabszám/8 byte kell kb, nem darabszám*4 byte.
Szóval valamit valamiért... gyakorlásnak sztem teljsen oké a fix méretű tömb. Pláne ha még nem tanultatok mást.
„Vagy először csak megszámolni, de ezzel meg a futásidő nő..”
Ezt megerősíthetem, mivel én is ezen megoldást alkalmaztam; Sok szám esetén fél helyett kábé 0,7 szempillantásnyira lassul a dupla ellenőrzések miatt.
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!