Magyar esetén semmi, bármelyiket választhatod, és elég az egyik.
“All nothings are not equal.”
Magyar esetén semmi, bármelyiket választhatod, és elég az egyik.
“All nothings are not equal.”
Sziasztok!
Tudnátok ajánlani programozással kapcsolatos könyveket, amelyek viszonylag egyszerűen érthető és gyorsan lehet haladni vele? Elsősorban C# nyelvvel foglalkozó könyvek érdekelnének. Előre is köszönöm segítségeteket
[ Szerkesztve ]
"Te is fiam Bluethooth!"
(#7153) haromegesz14 válasza zulu_mester (#7152) üzenetére
7063 hozzászólásban említett Reiter István könyvet tudom ajanlani. Netről letölthető.
Igaz, a C#6.0 ujdonságai nincsenek benne, de az alapok megtanulásához nagyonjó.
Köszönööm a válaszokat!
"Te is fiam Bluethooth!"
Ez egy tipik gyakorló feladat. Mit tanul belőle ha más oldja meg? Üljön le, nézzen utána, olvassa vissza a tananyagot és oldja meg. Ha valahol megakad benne segítünk, de annak semmi értelme ha itt megoldja neki valaki.
[ Szerkesztve ]
(illetve ez a C# és nem a C topik, a kettő nagyon nem ugyanaz)
Bár a feladat leírásából C#-ot szeretnének
[ Szerkesztve ]
Üdv! Belefutottam egy probléma, és ez akadályozza c# fejlődésemet, de úgy érzem ha ezt a problémát megoldom, akkor szintet lépek.
Szóval adott egy feladat: Textboxba ír a user egy mondatot, és meg kell mondani, hogy mondjuk mennyi e betű volt benne. Elkezdtem megírni, de itt jött a gond. A mondatot listben tudom tárolni, ilyenkor ugye nem kell megadnom, hogy mekkora lesz a mondat, ha jól gondolom. Viszont mikor számolni akarok, akkor nem tudom a pontos procedúrát. Tömbbel simán megtudnám csinálni, de egyrészt az nem elég mókás már másrészt pedig nem tudom előre hogy mennyi karaktert akar megadni a felhasználó.
Szóval hogyan lehet végigfutni a mondaton hogy megmondjam mennyi e betűt tartalmazott ?
PS4
Nem kell neki külön lista vagy tömb és a mérettel se kell törődni, mert a stringeket tudod char tömbként kezelni.
Pl.:string s = "Hello";
Console.WriteLine(s[1]); //e
A hosszát egy normál tömbhöz hasonlóan a s.Lenght property adja meg. Pl.:Console.WriteLine(s.Length); //5
Ugyanúgy bejaárhatod for vagy foreach segítségével, de még a LINQ is működik rajta.
[ Szerkesztve ]
char[] karaktertomb = "ez egy mondat".ToCharArray();
ezen már csak végig kell iterálni.
szerk.: már válaszoltak.
szerk2: inkább kitöröltem a megoldást, hajrá
[ Szerkesztve ]
Aha. Volt egy ilyen gondolatom még C-s időkből, de nem voltam ebben biztos. Akkor marad ez a megoldás. Köszönöm a gyors segítséget!
PS4
A fejlődésről jutott az eszembe - itt van néhány jó tesztfeladat: [link]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Hát ez marha jó Láttam már ilyen fajta oldalakat, de ez a legjobb mind közül.
zulu_mester egyébként igen, én is a Reiter István féle 2 könyvet ajánlom, alap elsajátításhoz tökéletes. Ha kell valami segítség, itt várunk
Sziasztok,
Valahol azt olvastam, hogy a var kulcsszó használatát lehetőleg kerülni kell. Mégis azt latom, hogy egy csomóan használják.
Most akkor, hogy van ez?
10 féle ember van: aki ismeri a bináris számrendszert, és aki nem
nincs semmi ok a kerülésére, illetve sok helyzetben, pl. linq meg hasonló esetekben egyszerűbb is mint kitalálni mi lesz az eredmény.
Igazából semmi varázslat nincs benne, intellisense behelyettesíti helyetted kb, ha ráviszed a kurzorod a var szóra is kiírja milyen típus van mögötte.
[ Szerkesztve ]
Linq-nál elkerülhetetlen a használata, mert nem tudod a visszaadott tipust.
De az észnélnküli, mindent var-al veszek fel, majd a fordito megoldja, sem jó, mert nem tudod mi micsoda.
Főleg, ha hosszu ideig használod azt a változót, amikor már a harmadik helyre adod át paraméterként, akkor elveszel az ismeretlen tipusokban. Lehet, hogy rossz overload metodust hiv majd meg, vagy te azt hiszed, hogy double, mikozben a fordito csak int tipusként hozta létre, satöbbi.
Egy foreach-en belül a var item in collection teljesen rendben van.
CleanCoding szerint pl tanácsos kiírni, ha nem egyértelmű a visszatérési típusa egy fv. Vagy, ha információval szolgál. Pl new esetén egyértelmű.
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
A var egy olyan speciális "típus" amit a fordító behelyettesít a megfelelőre. Ezzel el lehet kerülni két oldalas castolást. Egyszer kaphat "normális típust", ebben különbözik az object-től.
[ Szerkesztve ]
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
Milyen hibát okozhat?
Pl. int helyett string lesz.
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
Mikor? Nem jut eszembe olyan eset ahol var miatt ilyen lehetne. A var eleve nem is vesz el a tipusossagabol a nyelvnek semmit, csak az előbbi ervhez hozzateve,szoval ettől még akár használni is lehetne.
[ Szerkesztve ]
Ez új, egy példát tudnál adni?
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
string az tényleg elég dúúúrva lehet, de ha beírod, hogy
var szam=0; (int32 lesz)
var szam=0.0; (ez double)
De ha simán el tudom képzelni, hogy van két overloaded metódus, az egyik int-t ad vissza, a másik stringet, és ha nem figyelsz a paraméterezésnél, akkor a var walami=metodus(); a rosszabbikat fogja neked választani.
De elég az is, ha double helyett int adattípust definiál a var k=0; és nem érted, miért számol baromságot.
Nyílván a var k=0 esetben doublet szeretnél akkor nem ezt használod, vagy eletszerubb esetben mondjuk mint ososztaly/interfész szeretnél rá hivatkozni de ezek azért nem a kifejezett hiba esetek, bár az overloaded esetben nem értelek hiszen vissza teresi értékkel nem lehet overloadolni, ha meg rossz paramétert adsz meg akkor nem a neked rosszabbat fogja adni, hanem azt amit meghivtal.
Én pl mindig vart használok, azokkal a kivetelekkel amikor vagy nem lenne egyértelmű ezek alapján mi az, vagy tényleg csak valamelyik interfész részét akarom mondjuk láttatni.
[ Szerkesztve ]
Az is lehet, hogy rosszul emlékszem. Sokat nem C#-oztam, a linq-t meg még annyit sem használtam. Szerintem nektek lesz igazatok!
Szerk.: igen, inkább visszatöröltem a dolgokat, hogy hülyeség ne maradjon meg. Elkövettem azt a hibát, hogy nem voltam alapos és nem nézem utána. Elnézést.
[ Szerkesztve ]
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
De ha simán el tudom képzelni, hogy van két overloaded metódus, az egyik int-t ad vissza, a másik stringet, és ha nem figyelsz a paraméterezésnél, akkor a var walami=metodus(); a rosszabbikat fogja neked választani.
Azért az kemény lenne.
Type 'Program' already defines a member called 'Get' with the same parameter types
ja, sorry, te "hasonló" paraméterekről beszéltél és figyelmetlenségről. ebben az esetben nem fogadom el az érved.
[ Szerkesztve ]
Masreszt visszateresi erteken nem lehet overloadolni C#-ban. Nem tudom, hogy az jo lenne-e egyebkent.
(Multiple dispatch jo lenne, de az keves nyelv tudja.)
while (!sleep) sheep++;
Nem ide tartozik, de érdekességképp.Tervbe van egy ilyen feature:
(string, string, string) LookupName(long id) // tuple return type
{
... // retrieve first, middle and last from data storage
return (first, middle, last); // tuple literal
}
Ja, ez hasznos.
while (!sleep) sheep++;
Ez és a tuple milyen helyzetekben hasznos? Separation of concerns-t meg az olvashatóságot nem hágja át csúnyán?
Mármint ha pl nevet és hozzátartozó id-t szeretnék visszaadni, szerintem azt se Tuple-el csinálnám. Inkább csinálnék egy person osztályt, és akkor a tagjai nem anonymousok (Item1,Item2,Item3)
Szerintem kevered a vart a dynamic-kal. Maximum olyan eset tud előfordulni, hogy object lesz a konkrét típus helyett (pl. a Regex osztályon van ilyen a Matches property esetében).
(#7182) harylmu: Az említett szintaxis sokkal olvashatóbb, mint az hogy .Item1, .Item2 stb.
Olyan helyzetben tud hasznos lenni, amikor 1-2 helyen kéne pár elemű összetett típus (de nem kulcs-érték pár) és nem akarsz külön osztályt definiálni. Nem túl gyakori de azért néha előfordul.
[ Szerkesztve ]
Nehéz olyan helyzetet talalni, amikor a Tuple hasznos.. lustaság vagy amikor tényleg nem fontos, hogy legyen rá valami kezzel fogható dolgod. Sokan ilyenkor a key value-hoz menekülnek és abba gyomoszolik bele a problémát.
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
Mint írtam igen, összekevertem!
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
Lenne egy igazából sima algoritmizálós problémám, de mésis C# -ban dolgozok, így ide tartozik.
A feladat az lenne, hogy van egy tömbünk amikbe vannak fej (F) meg írás (I) pénzfeldobás eredményei, persze jó sok.
Meg kéne keresnem a leghosszabb F sorozatot a tömbben, hogy hol kezdődik, és milyen hosszú.Ehhez kérném a segítségeteket, mert hiába agyalok rajta, nem tudok rájönni hogyan kellene.
google: c# longest streak - pl
A 2-es válaszban a linq extension pl klassz.
köszi a linket!
Végül nem így csináltam ugyan, mert voltak benne számomra még ismeretlen dolgok, de merítettem belőle ötletet.
helyes, az algoritmus a lényeg.
Sziasztok!
Kb. 3 hete kezdtem el C# programozással foglalkozni, és az egyik gyakorló feladatban elakadtam.
A feladat: "Addig kérjünk be számokat billentyűzetről, amíg azok összege el nem éri a 100-at. A végén írjuk ki a képernyőre a számok összegét.
Lehetséges módosítások:
- a bekérést hagyjuk abba, ha elérjük a 100 összeget, de legfeljebb 10 db számot
- csak a pozitív számokat vegyük figyelembe az összegképzés során
- írjuk ki a legkisebb és legnagyobb értéket amelyet beírtak
- határozzuk meg, volt-e a beírt értékek között páros szám (igen/nem)"
A min. és max. kiíratásra megtaláltam a megfelelő tételt, viszont arra sehogy se jövök rá, hogy miként lehetne az összes bekért érték az a tömb, amiben keresni fog.
Előre is köszi a segítséget!
A tömböt még a beolvasás előtt hozd létre, mivel max 10db-ot olvashatsz be ezért egy 10 elemű tömb tök jó neked(vagy használhatnál listát is, de gondolom itt tömböt kell)
ez esetben: int[] tomb = new int[10];
Ezzel létrehoztál egy új, 10 elemből álló tömböt, a mostani kódodnál egy egy elemű tömböt hozol létre, amiben az egyetlen elem a szam változó tartalma.
Minden sikeres beolvasásnál el tudod menteni ebbe a tömbbe az elemeket, és onnantól tudsz keresni rajta, meg amit akarsz.
Letrehozod ugyan a tömböt, de a beolvasas után sehol nem rakod bele a beolvasott számot
Vaksi vagyok vagy tenyleg nem rakod bele a szamokat a tombodbe a while ciklusban?
[ Szerkesztve ]
1) Hibakezelés hiányzik (pl.: int konverzió)
2) Tömbbe nem pakolod be az értéket.
3) Páros/páratlan vizsgálatnál az utolsó számot vizsgálod csak meg és nem az összeset.
4) tomb[k] kap értéket és nem a min. Képen nem látszik, de gondolom ugyanez van a max-al is.
Érdemes lenne Linq-et is megnézni, ha az engedélyezett.
[ Szerkesztve ]
Azt írta, hogy 3 hete kezdte. Szerintem nem érdemes rögtön az alap algoritmusokat átugrani LINQ-val.
Teljesen jogos.
Köszi mindenkinek a segítséget!
Már csak egyetlen gond van vele, hogy ha 10-nél kevesebb értéket írok be, akkor nem működik megfelelően a program, ha pontosan 10-t, akkor igen.
A feladat leírása:
Addig kérjünk be számokat billentyűzetről, amíg azok összege el nem éri a 100-at. A végén írjuk ki a képernyőre a számok összegét.
Lehetséges módosítások:
a bekérést hagyjuk abba, ha elérjük a 100 összeget, de legfeljebb 10 db számot
csak a pozitív számokat vegyük figyelembe az összegképzés során
írjuk ki a legkisebb és legnagyobb értéket amelyet beírtak
határozzuk meg, volt-e a beírt értékek között páros szám (igen/nem)
Szia.
Berakod pastebin-re és feltöltöd megint azt a részt? A max-min algoritmusnak 1nél nagyobb tömbben mennie kell. Lord.rakli 4)-es pontját is fixáltad?
+ csak egy tipp: nem csak a min-t, hanem a max-ot is megkaphatod ugyanazon a cikluson belül, ha a kacsacsőrt a másik irányba fordítod. És akkor nem kell 2x végigmenni a tömbön.
edit: látok arra esélyt, hogy a probléma az lesz hogy azelőtt elérted a 100as szummát mielőtt feltöltötted a tömb mind a 10 tagját. Majd mikor végigiterálsz rajta a keresőn dob egy null exceptiont, a fel nem töltött elemre.
Pl. tomb[9]-re dob egy null reference-t, mert nem töltötted fel az első ciklusban, mert csak tomb[5]-ig jutottál el, de a tomb[6],tomb[7],tomb[8],tomb[9],tomb[10] mind null (ami nem nulla!).
[ Szerkesztve ]
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!