Hogy tudom ezt megoldani? Kód lent. C#
Teljes kód:
https://pastebin[pont]com/bhx8KAvX
5 számot bekérek, majd 5 random számot generálok. Ez megvan. A random számokban nem lehet ugyanolyan érték, ha van már egy olyan. Ez megvan.
A felhasználó amit számot bead, és ha van már olyan akkor nem adhatja be ugyanazt. Ez is megvan.
Viszont, egyszerűen képtelen vagyok azt belerakni, hogy 1 és 90 között adhasson meg csak számot, ha nem annyi akkor kérje be ugyanazt. Ugyanúgy, mintha már adott be olyat akkir újra kérje be.
Ebbe kell valamit vacillálni:
while (ownNumbers.Contains(temp) == true)
{
Console.Write($"Adja meg a(z) {i + 1}. számot: ");
temp = int.Parse(Console.ReadLine());
}
A while feltétel ugyebár megvizsgálja, hogy az adott temp változó értéke szerepel-e már, ha igaz a feltétel akkor fut tovább, addig amíg nem. Ebbe próbáltam volna még azt, hogyha a temp kisebb mint 91 pl, de így nem tudom működésre bírni, ha külön while-t rakok be a while-ba akkor sem tudom. Sajnos nincs egyenlőre megoldásom.
Valakinek valami javaslat?
Ez a baj..
Ahogyan már elejétől fogva válaszolsz.
Ez a kigúnyolós, lekezelő, kinevető stílus.
Főleg, hogy már írtam, hogy tárgytalan.
De nem. Kötekedjünk.
Na ezért vagy 44%-on.





„Már tudom. De leírhattad volna konkrétabban is.”
Még az ötlete is távol álljon tőlem, hogy mindenféle gonosz manót a védelmembe vegyek, de a kolléga első válasza kifejezetten segítőkész volt. Nem tudom, mi lehetett volna annál konkrétabb, hogy kerekperec leírja, mit hagyjál el a sorból, sőt, be is mutatja, hogyan. Érzékeny idegrendszerét alighanem a tökéletesen fölösleges változók megjelenése kezdte ki, ami, ha nem is menti, de magyarázza az impertinens modort, amelyben a társalgást folytatta.
„Amit te adtál meg az meg azért se lenne jó, mert ha 1 et vagy 90 et kérnél akkor futna tovább a ciklus...”
Bizonyára alaposan megfontoltad a szavaidat, de én ilyenkor bizony már túl fáradt vagyok az értelmezésükhöz. Tehát, miért is? A te meglehetősen légből kapottnak tűnő feltételeiddel szemben a kolléga egyszerűen az 1..90-es tartományt lőtte be: A ciklus addig fut, amíg ezen kívül eső értéket kap. A közmegegyezés szerint sem az 1 nem kisebb, sem a 90 nem nagyobb saját magánál, tehát benne vannak a tartományban, vagyis megszakad velük a ciklus.
Lenne még egy-két megjegyzésem a programoddal kapcsolatban, de inkább máskor. Aludnom is kell.





Ugyan, én nagyon jól szórakozom. :D :D
Az ilyen nagypofájú bohócok miatt kereshetek annyit, amennyit, úgyhogy jöjjenek csak temp22-őzni meg 'true != false'-ozni minél többen. :D :D





"". Olyat, hogy '(boolean expression) == true' nem nagyon írunk, nem kell a '== true' rész, ugyanazt jelenti nélküle is."
Nem igazán tudom miről beszélsz itt."
If logikai erteket var, "boolean expression" pedig egy logikai ertek, ezert felesleges tovabb vizsgalni, hogy az igaz/hamis egyenlo az igaz/hamissal. Abban az esetben van ertelme ennek, ha a nullable boolrol beszelunk, mert harom fele allapotot tarolhat: igaz/hamis/null





Eső után köpönyeg, de ha már beígértem:
Először is, üssenek érte agyon, de továbbra sem értem, mire jó a temp2 változó, a temp3-nál pedig végképp elvesztettem a fonalat. Miért ne használhatnád továbbra is a sima tempet?
Aztán, szép dolog a hibakezelés, de ez milyen már? Beírom: 999999999999999999999999999999, vagy -20000000000 a program figyelmeztet: „Nem egész szám”. DE bizony az, csak nem fér bele az int változóba. Beírom: -7, vagy 100, hibaüzenet nuku, egyszerűen csak újraolvassa az adott számot. Vagy soha ne legyen hibaüzenet, vagy pedig mindig, és ha nincs kedved szétszálazni minden lehetséges hibát, akkor olyan általános, hogy ne lehessen belekötni; „helytelen adat”, vagy efféle.
Érdekesség, hogy a számok ismétlődésének elkerülésére két helyen is alkalmazott tartalmazásvizsgálatot (tömb.Contains) a találatok kiértékelésénél nem használod, hanem egymásba ágyazott ciklusok vannak helyette. Gondolom, amúgy a Contains is egy ciklust futtat le, úgyhogy nincs nagy különbség, csak meglepett a váltás.
A program jól felosztható legalább három részre – beolvasás, nyerőszámgenerálás, értékelés – szerintem ezeket érdemes lenne külön metódusokba szervezni. Persze, hogy ez az egyszerű program még lenyelhető egyetlen falatként is, de pont az ilyen áttekinthető feladatokban tudod begyakorolni a tervszerű építkezést, nem kell megvárnod azt az időt, amikor muszájból kényszerülsz rá, mert már semmit nem értesz a saját kódodból.
A számítástechnikában üdvös dolog az angol nevezéktan használata, bár én, a soha magasabb szintre nem lépő hobbiprogramozó, azt sem bánom, ha valaki magyar neveket használ – de ebbe a makaróninyelvbe, amelyben „fut”, „genLottoNumbers”, „hibaIN”, „luckyNumbers”, „ujraSorsol”, „temp”, „talalatokSzama” váltogatja egymást, szó szerint belefájdult a fejem. Hogy elakadsz az algoritmusban, az rendben van, kezdeti nehézség... de a dolognak ez a része azért könnyen tisztába tehető, mielőtt bemutatod a kódot.
Még egy apróság: Oké, hogy magadnak írod a programot, gyakorlásként, de nyugodtan képzeld el úgy, mintha egy ismeretlen felhasználó is találkozhatna vele. A hibaüzenetekről ugyebár már volt szó, ezenkívül egyrészt legalább egy „Lottó” főcímmel illenék őt tájékoztatni, hogy egyáltalán mivégre kell neki számokat beirkálnia, másrészt, ha sorsolás helyett sorolás, gombot helyett gobmot jelenik meg a képernyőn, magázódva kezded, majd a végén letegezed, annak az alapján esetleg nem igazán kedvező feltételezéseket alakít ki a háttérben dolgozó program általános minőségéről. Egyszóval, figyelj oda arra is, amit nem a programnyelv könyörtelen szabályai követelnek ki maguknak, csak a gyalog járó hétköznapi gondolkodás várja el. Ide kapcsolódhatnak még az olyan komfortérzet-növelő finomítások, mint a számoknak a valódi lottó esetén is szokásos sorba rendezése, vagy a kisbetű-nagybetű különbség figyelmen kívül hagyása, stb.
További 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!