Új hozzászólás Aktív témák
-
WonderCSabo
félisten
válasz prog1000 #2182 üzenetére
A megoldás pofonegyszerű, ha ismered a mellékátló és a főátló definícióját...
[ Szerkesztve ]
-
WonderCSabo
félisten
-
WonderCSabo
félisten
válasz WonderCSabo #2188 üzenetére
for (int i = 0; i<3; i++)
{
for (int j = 0; j<3; j++)
{
if (i == j || j == i-1)
M[i, j] = 3.14;
else
M[i, j] = rndm.Next(100, 200);
}
}[ Szerkesztve ]
-
WonderCSabo
félisten
válasz Gülredy #2461 üzenetére
A % operátor a modulus operátor, nem az osztás eredményét adja vissza, hanem hogy mennyi a maradék. Pl. 5 % 2 == 1.
Ergó ez a kifejezés : x % x == 1 && x%1 == x semmilyen számra nem lesz igaz, hiszen egy számot önmagával leosztva a maradék mindig 0, illetve egyel osztva szintén.
Továbbá, a prímszákat a nem prímszámoktól az különbözteti meg, hogy a prímszámoknak pontosan 2 osztója van: 1 és önmaga. A nem prímeknek minimum 3.
"ha önmagával osztom akkor az 1, ha 1 el osztom akkor önmaga"
Ez minden számra igaz, nem csak a prímekre.
A prímség eldöntését első körben úgy szokták megírni, hogy egy ciklusban modulussal osztogatják a számot, és ha a modulus 0-át ad, akkor ugye egy osztót találtak. Ekkor a számlálót megnövelik egyel. A végén megnézik, hogy a számláló 2-e vagy sem.
[ Szerkesztve ]
-
WonderCSabo
félisten
Hello!
Hogyan tudnám okosan ellenőrizni, hogy a stringem tartalmaz-e általam nem érvényesnek tartott karaktereket (az érvényesek ismeretében). Az okos alatt úgy értem, hogy nem for -al és if - el, hanem mondjuk LINQ-val. Köszi!
-
WonderCSabo
félisten
válasz martonx #2969 üzenetére
ööö, ez egy baromi egyszerű probléma, ennyire bonyolultan írtam le ?
A stringben csak a kövi 3 karakter lehet: n, f, e . Ha bmi egyéb más akár csak egyszer is előfordul benne, akkor már nem valid.
Egyébként közben rájöttem, hogy regexel baromi egyszerűen megoldható. Esetleg van még egyszerűbb megoldás?
-
WonderCSabo
félisten
válasz Neil Watts #3020 üzenetére
Miért ez így miért nem jó? Attól eltekintve, hogy a max/min keresés ciklusában n-szer kiirod a még be nem fejezett max/min keresés eredményét...
-
WonderCSabo
félisten
-
WonderCSabo
félisten
Bajban vagyok. KeyDown eventet akarok elkapni, de az istennek se akar működni. Ha a form-ra bmit rápakolok, nem működik a cucc, csak üres form esetén. A KeyPreview propertyt True -ra állítottam. Mi lehet a gond?
[ Szerkesztve ]
-
WonderCSabo
félisten
válasz Jhonny06 #3205 üzenetére
Nem, egyáltalán nem. Az STL vector egy sima tömb, csak van rá húzva egy pár fv, növeli a méretét, hogy ha kell, stb. A HashSet pedig egy hashtáblán alapuló adatszerkezet. És amiért jó nekünk ide a hashtábla:
- nem lehet duplikált kulcsokat belerakni
- a berakás (az esetek nagy részében), és a többi alapművelet mindig (persze ezek most nem is kellenek) konstans komplexitásúTermészetesen az STL vectorra egyik sem igaz (kivéve a berakást), hisz az csak egy tömb. Ami miatt viszont gondot okozhat a hashtábla, az az, hogy az elemek semmilyen sorrendiséget nem fognak megtartani (tehát se a kulcsok rendezése alapján, se a berakás szerint), de jelenleg ez sem probléma.
[ Szerkesztve ]
-
WonderCSabo
félisten
válasz Jester01 #3207 üzenetére
Ez természetesen így van, de 10 db (vagy sokkal több) szám esetén 1-hez nagyon közeli valószínűséggel nagyon rövid idő alatt fut le. Én tesztelgettem ezt, és még sosem sikerült elhúzni az időt ezzel. Persze ha biztosra akarsz menni, akkor csinálsz egy láncolt listát 1-n-ig, megkevered őket, aztán random indexeket választasz és a választottad kiszeded a listából, csinálod ezt amíg üres nem lesz a lista.
[ Szerkesztve ]
-
WonderCSabo
félisten
Te most vmit nagyon elnézel... És még idézted is azt, hogy
A set is a collection that contains no duplicate elements
Tehát: nem lehetnek benne duplikált kulcsok. Pont ezt használtam ki ennél a kis kódnál. A hashtábláknak pedig óriási előnyei vannak más adatszerkezetekkel szemben, egy kis ízelítőért lásd előző hszemet...
Szerk.: Ja látom már kiderült a dolog.
Szabesz: Az if is feleslegs, az csak azért van ott, hogy dupkilálás esetén várjon picit a progi, de teljesen felesleges várni.
stevve: de akkor már inkább vizsgálnám, hogy van-e már ilyen a kollekcióban
Ez az amit a hashtábla konstans idő alatt tesz meg a hozzáadással, Te pedig minden egyes új szám hozzáadásánál lineáris keresést végeznél...
[ Szerkesztve ]
-
WonderCSabo
félisten
A hashtábla is generikus.
Már leírtam az előnyeit. Konstans idejű hozzáadás (majdnem mindig), eltávolítás és lekérés, asszem ezek önmagukban bőven elegendő érvek.
Szerk.: A második részre: a kód is sokkal tisztább vele, plusz miért ne oldhatnánk meg elegánsabban a dolgot, ha már van mód rá. Én csak beposztoltam a kódot, hogy ezt megmutassam. Meg amúgy is ezek a kis programok csak példák, a való életben nem 10 elemű listákkal fog csak foglalkozni a tanuló.
(#3217) Szabesz: Okés.
[ Szerkesztve ]
-
WonderCSabo
félisten
Elírtam, úgy értettem, hogy a HashSet is az, a HashTable osztály valóban nem az. A többinél pedig direkt magyarul kisbetűvel írtam, mert általánosságban beszéltem a hashtáblálról, nem a HashTable osztályról.
Mellesleg természetesen a HashTable annyival tud többet a HashSetnél, hogy az előbbi kulcs-érték párokat tárol, az utóbbi csak kulcsokat. De HashTable helyett akkor inkább Dictionary.
[ Szerkesztve ]
-
-
WonderCSabo
félisten
válasz martonx #3223 üzenetére
Sztem a kérdés arra vonatkozott, hogy hogyan lehet generáltatni.
[ Szerkesztve ]
-
WonderCSabo
félisten
Nyilván valamit valamiért alapon megy ez is, mivel karban kell tartani a index-et.
Nem, nem kell karbantartani semmiféle indexet. Az elem címe lekéréskor, hozzáadáskor, törléskor is a kulcs alapján a hash fv-el képződik le, ez O(1) - es művelet. Itt hozzáadáskor lehet csak egy kis probléma: ha kezd betelni a hashtábla, akkor nagyobbat kell lefoglalni, és átmásolni az elemeket. Ha pedig a hash fv már meglévő elem indexét képezi, akkor ezt az ütközést fel kell oldani. A HashTable ezt újrahasheléssel oldja meg, a Dictionary pedig láncolással. Vagy erre értetted az index karbantartását?
-
WonderCSabo
félisten
válasz trisztan94 #3241 üzenetére
Nem is értem miért kell ezt ennyire túlbonyolítani. Egyszerűen egy db int-ben tárolod elsőnek felforgatott gomb indexét. Ha gombok[lastIndex].Text == sender.Text, akkor mindkettőt fehérre állítod. Minden második kattintás után meg mondjuk a lastIndex-et -1 -re állíthatod, ezzel tudod magadnak jelezni, hogy még nem kattintottak először.
A magyar elnevezéseket, főleg az ékezetes elnevezéseket nagyon messziről kerüld el.
Bazzeg nem igaz, hogy Jester leírta már ugyanezt előttem.
[ Szerkesztve ]
-
WonderCSabo
félisten
Sztem borzalmas lett az új felület, mintha visszaugrottunk volna az időben.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!