C#-ban hogyan lehet egy listában megkeresni azokat a számokat, amikből kettő van?
@#8: „Remélhetőleg nem tévesen feltételezem, hogy nem pontosan két darabot...”
Talán nem tévesen, de tény, hogy nem is alappal. Ez már nem az első olyan C#-os kérdés a napokban, amit a kérdezője úgy tesz föl, hogy még a feladatot sem képes pontosan meghatározni. Annyit közöl, hogy neki nagyjából ilyenésilyen program kéne, aztán, hogy minek, arról tapintatosan hallgat. A saját próbálkozását kérésre sem mutatja be, a hozzászólásokra nem reagál, ha kódot kap, egy vak lóért el nem árulná, hogy hasznát látta-e, vagy egy kukkot se ért belőle (pedig úgy igyekeztem, hogy maradjon kérdeznivalója...). Lehet, hogy mindez nem utal egyértelműen ugyanarra a kérdezőre, de meg se lepne, ha úgy volna. Akkor pedig az sincs kizárva, hogy az a „lista” valójában egy tömb vagy akár beolvasandó fájl.
Kíváncsi vagyok, hogy Kérdező most bemutatja-e, mit kezdett a válaszokkal (a tömbös C-megoldás is működik listákkal is). Ebből a szempontból teljesen mindegy, hogy iskolai feladatról vagy otthoni elmetornáról van szó, mindkettő csak akkor ér valamit, ha meg is érti, amit csinál, az meg nem megy a saját igyekezete és párbeszéd nélkül. Nehéz elképzelni, hogy a kapott kódot csak hozzácsapja a magáéhoz, és máris kész a módosíthatatlanul tökéletes program, amin már nincs mit kibeszélni.
#11, kiegészítés: „működik listákkal is”
Kérdező, míg a saját kódoddal bíbelődöl, addig is megpróbáltam teljes, működőképes programba illesztve megírni a fent említett ötvözetet:
Ez listákat használ, de, mint láthatod, egy az egyben az #5 hozzászólás algoritmusát alkalmazza, annyi különbséggel, hogy a kigyűjtött elemek száma kiolvasható doubles.Count-ból így az idx változó is fölöslegessé vált. A program egy általad megadott elemszámú listát generál, azután egy másik listába másolja a kétszer előforduló elemeket. Mindkét lista tartalmát a képernyőre írja, hogy ellenőrizhesd a működését.
Jól látom tabaki, te vagy itt az ingyenes házi megcsináló cseléd?
Azért kérdezem, mert a mi osztályunk kapott jövő hétre megoldandót, küldeném akkor a feladatleírásokat.
Kösz.
#15 az első oldalon is találsz párat, érdemes őket is megkérdezni.
Vagy csak írd ki ide a kérdést, az is elég nekik.
#5 vagyok. Én egyébként C#-ban írtam, ezért hagytam ki direkt a metódus nevét és paraméter listáját, mert nem akartam unsafe kódokkal vacakolni, hanem tömböket használtam. Egyébként #4-es kódja C#-ban egy az egyben megy, ha engedjük az unsafe kódokat.
Az én célom csak az volt, hogy bemutassam mennyire túlkomplikálja #4-es az algoritmusát, nem akartam módosítani a paramétereken és a visszatérési értéken.
Egyébként ha valaki gyorsabb megoldást akarja, rendezze a tömböt egy n*log(n)-es megoldással és menjen végig a listán, úgy már egyszerű megtalálni a pontosan 2x előforduló elemeket.
Egyéb megszorítások, pl elemek szűkebb értékkészlete esetén pedig valószínűleg könnyen adható méggyorsabb algoritmus.
Pl.
lista.GroupBy(x => x).Where(x => x.Count() == 2).Select(x => x.Key)
@#15: "Jól látom, tabaki, te vagy itt az ingyenes házi megcsináló cseléd?"
Sasszemed van, és mi tagadás, tűpontos a meghatározás. Csak küldd a feladatokat, minden tanár álma, hogy olyan kódot tegyenek le az asztalára, mint amilyent Kérdező tőlem kapott.
Szerintem valamit nagyon nem értettél meg a pimasz kérdés és a segítőkész válaszok viszonyában, Kérdező képességeiről pedig kissé túlzó, romantikus elképzeléseid lehetnek. De nem zárkózom el az elől, hogy ezeket a témákat alaposabban kitárgyaljuk, szerintem van még egy kis időnk, amíg Kérdező méltóztatik visszatérni a saját kérdéséhez, és igazolni a kedvező megítélésedet.
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!