Hirdetés
- HiFi műszaki szemmel - sztereó hangrendszerek
- Akciókamerák
- Milyen billentyűzetet vegyek?
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Nem teljesít túl jól a kasszáknál az aktuális Xbox generáció
- Mini PC
- Gaming notebook topik
- Milyen egeret válasszak?
- Milyen RAM-ot vegyek?
Hirdetés
-
Barcelonából indul nemzetközi útra a Huawei MatePad 12.2 (2024)
ma Illetve a MatePad Air 2024, amit errefelé MatePad 12 X-nek hívnak.
-
Kipróbáltuk a Synduality: Echo of Ada zárt bétáját
gp A világvége után mechákkal és aranyos, folyton csacsogó anime lányokkal kell szembeszállni az emberiség maradékát pusztító szörnyekkel, valamint az energiaválsággal.
-
Nyugodtan viheti az AI-szakembereket a Microsoft
it A Microsoft átvette az Inflection embereinek zömét, valamint a társalapítókat – de az EU trösztellenes hatósága nem piszkál bele a folyamatba. A hollandok elégedetlenek.
Új hozzászólás Aktív témák
-
-
Jhonny06
veterán
Ez a lehető legrosszabb tanács volt. Az a baj a C#-al, hogy sok minden már egyenesen túl egyszerű benne. Jobb, ha "szarakodik" azzal a bubble sort algoritmussal, mert ezekből tanul az ember, nem abból, hogy a beépített sort függvényekkel rendezget. Ha később át kell állnia C-re vagy C++-ra, nagy bajba lesz az ilyenek miatt. Vagy azt mondják, hogy VS meg IntelliSense nélkül jegyzettömbben írj meg valamit..
[ Szerkesztve ]
-
veterán
válasz Jhonny06 #2402 üzenetére
Ha jól veszem ki az eddigiekből, a C-s világból tér át a kolléga C#-ra. Szerintem egy nyelvben sem az a legérdekesebb, hogy egy index milyen típusú és hogy tudok-e olyan algoritmust, ami kettőt oszt hatfelé és megszorozza x négyzetgyökével a szinuszát. Ettől már a suliban is herótom volt, mert a valós problémákhoz nincs köze és nem gondolom, hogy bármit lehet abból tanulni, ha a matekon gondolkodik az ember, nem a programon.
Sokkal érdekesebb kérdés például az, hogy mit mikor lehet példányosítani vagy az, hogy építsünk fel egy kifejezést, mint az, hogy tömbökkel szórakozzon valaki. Nem kell mindent az IntelliSense-re bízni és nem érteni, amit leírunk, mert az sem jó, de ezt nem is mondtam. Viszont egy IQueryable kezelése sokkal hasznosabb c# tudás szerintem, mint egy tömb kezelése. Én mondjuk nem sokra mennék egy olyan fejlesztővel, aki nem tud adatbázisul, de tömbzsonglőr. Persze azért tanács a tanács, mert nem muszáj megfogadni. Ez nem baj.
"Vagy azt mondják, hogy VS meg IntelliSense nélkül jegyzettömbben írj meg valamit.."
Szerencsére ez sem gyakori valós probléma. Mindenki túlságosan egyszerűnek látja a C#-ot, pedig nem az. Nem a túlbonyolítástól lesz valami jó.
martonx:
Nem vesztettem el a türelmem, csak ennek kevés értelmét látom. Én állásinterjún a gyakorlat híve vagyok, nem a szívózásé.[ Szerkesztve ]
-
Lacces
őstag
Sziasztok!
Köszönöm a megoldást Jester01 Illetve a többieknek is. Bocs, hogy ilyen későn jöttem fel a válasszal.
Amúgy ez egy gyakorló feladatsor része volt, amelyek közül a következő gyakon, lesz belőle egy röpi, és ha az ember nem tudja megoldani az adott feladatot 10-15 perc alatt akkor nem kaphat aláírást és bukta az egész tárgyat.
És tegnap este annyira a rendezésben gondolkoztam... az a és a[i+1]-re fokuszáltam, hogy amit Jester01 írt le, az a(i) és a[j] kombó teljesen kiment a fejemből, csak másnap reggel jutott eszembe, mikor c++-ozni kellett. :-DMost a java-t és c#-ot tanuljuk, de... nem is ennek a két nyelvnek az alapjait, hanem ilyen c/c++-os feladatok megoldását, nézzük. Szal c++-osan programozunk.
Meg most vannak tantárgyak, amelyek c++-ra épülnek, szal nem baj ha megtanulom ezeket az algoritmusokat.
Sőt nekem nagyon tetszett amikor python-nal melegettem be a programozásba (nekem a python sokat segített, szerintem egy jó tanuló nyelv), hogy egy split metódust megírtunk saját kezüleg, mert így tudom, hogy akkor egy-egy függvény hogyan működik a háttérben, vagy volt egy C-os könyv, ahol olyan függvényeket írtunk meg, amelyek pl.: a unixos cat parancs megvalósításának is tökéletesen megfelelt. Ez nekem tetszett és sokat segített.Visszont értem én stevve érvelését is. Magamtól tanultam ezeket a kollekciókat, használtam is stb. Java és C# alapok vannak. És tényleg értem én, hogy mit mondasz, mert amit a munka világa követel, azt az egyetem nem tanítja. Azt magamtól kell megszerezni. Teljesen megértelek, és hidd el én is kidobnám ezeket, de ha kell diploma, akkor muszáj leszek ezeket megcsinálni Máskor majd jelzem, hogy sulihoz kell vagy magamnak, Bocsánat, remélem nincs harag!
-
veterán
Dehogy van harag. Miért lenne. azt viszont nem tudtam, hogy ez sulihoz kell. Azt hittem, otthon, magadtól akarsz c#-ozni. Ha suli, akkor más. Ott sajnos kötelező ezekkel vackolni.
martonx:
Sajnos ezen az életpálya modell és egyebek sem segítenek. Szemléletet kellene váltani - csak ezt nehéz, már csak a szabályozások miatt is.[ Szerkesztve ]
-
ArchElf
addikt
válasz martonx #2405 üzenetére
Csak azt nem értem, hogy miért, nem lehet ezen változtatni?
Csak azért, mert aki érti is amit csinál (és amit a piac követel), az képes megélni a piacról és nem kell beérnie azzal a pár fillérrel, amit az iskola (állam) a tanároknak ki tud fizetni. Nincs nagy ördöngősség.
Ja és aki igazi szaki, az álaltában nem jó tanár, mert nincs türelme a tanulni nem akaró (és így a témához ostoba) diákokhoz.AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
martonx
veterán
válasz ArchElf #2407 üzenetére
Azért egy egyetemi tanár nem keres rosszul. Bár valóban kereshet egy fokkal többet is a versenyszférában.
Mondjuk igaz a mondás. Aki tudja az csinálja, aki nem tudja az tanítja.
Szerintem a megoldás az lehetne, hogy egyszerűen a versenyszférából kellene tanárokat keríteni. Napi 1-2 előadást, gyakorlatot szerintem sokan bevállalnának a versenyszférában dolgozó jó szakemberek közül is.
Plusz erősíteném a nyári, meg mindenféle gyakorlatot. Programozni egyszerűen úgy lehet megtanulni, hogy elmegy a diák pár hónapra egy-egy komoly céghez, és ott dolgozik. Nyilván nem a komoly nagy projekteket fogja vinni, de a kuli munkák során is komoly rálátást, gyakorlatot lehet(ne) szerezni.
Én kérek elnézést!
-
ArchElf
addikt
válasz martonx #2408 üzenetére
Én már magam is jó ideje gondolkodom ilyesmin (tanításon), de közel sincs annyi fölös keresetem, hogy be tudnék áldozni erre napi 2-3 munkaórát...
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
martonx
veterán
válasz ArchElf #2409 üzenetére
Nem is ingyen gondoltam volna Az egyeteme helyében lazán kirugnám a semmirekellő / hozzá nem értő tanárokat, majd a felszabaduló bérükből finanszíroznám az óraadókat. Közben pedig karonként plusz 2-3 fővel felduzzasztanám a phd-sek, kisegítő munkaerők számát akik íratnák, javítanák a dolgozatokat, végeznék a dokumentációs nyűgöket. És tuti, hogy végeredményben még pénzt is spórolna ezzel az iskola.
De hát nem én vagyok az oktatás politika vezetője, mostanában fontosabb, hogy legyen-e kötelező a hittan, meg egyéb baromságok...
Én kérek elnézést!
-
Gülredy
tag
Sziasztok, volna egy igen érdekes kérdésem.
Kiadtak egy feladatot (szorgalmi) amit plussz pontért lehetne megcsinálni. A gond csak az hogy nem igazán értem, hogy hogy is kezdjek neki, részben a szöveg érthetetlenségén, részben pedig bizonyára a saját tudatlanságom végett.
A feladat ez lenne:Fejlettebb porszívó-ágens:
Továbbra is két szoba van, de a szobák a 100 egységnyi élettartam alatt
véletlenszerűen bekoszolódnak, minden időpillanatban bármelyik szoba 1:100
valószínűséggel. teljesítménymérték: minden 10-ik időpillanatban a tiszta szobáért +2p, a koszosért -4p, minden mozgás -1p, minden szívás -2p.
Adjon egy ágensfüggvényt papíron és implementálja is programban. 1000-szer futtassa és közölje outputban, hogy melyik futásnál mennyi pontot ért el. Egy futást úgy dokumentáljon, ahogy az előző feladatban, csak tegyen a bekoszolódott szoba mellé egy felkiáltójelet, pl ha. a 72. lépésben bekoszolódott a B szoba:72 -- pozíció:A A:tiszta B:koszos!
Le tudná valaki írni hogy hogyan is programozná ezt meg c#-ban?
Nem a 100%os megoldást várom bár azért sem haragudnék meg , hanem olyanokat hogy ezt meg ezt felvenném változónak, kellene hozzá egy for ciklus ami vizsgálná ezt meg ezt ...
Például ezt a 1:100-hoz valószínűségű dolgot se tudom, hogy lehetne kivtelezni, mert jelenleg csak ezt ismerem Random r = newRandom(); number = r.Next(100); de ez csak 0-100 ig kiválaszt egy random számot az meg ide nem lenne jó.
Valakinek valami ötlete az egészre? -
Jester01
veterán
válasz Gülredy #2411 üzenetére
Mivel ez egy előző feladatra épít, így aztán a feléről fogalmam sincs mit akar.
Úgyhogy csak a konkrét kérdésedre válaszolok:Például ezt a 1:100-hoz valószínűségű dolgot se tudom, hogy lehetne kivtelezni, mert jelenleg csak ezt ismerem Random r = newRandom(); number = r.Next(100); de ez csak 0-100 ig kiválaszt egy random számot az meg ide nem lenne jó.
Szerinted ez miért is nem lenne jó? Hiszen ez 100 lehetséges számot ad vissza, tehát egyenletes eloszlást feltételezve bármelyik szám valószínűsége 1%. Vagyis egy tetszőleges de állandó számmal összehasonlítva máris megkaptad ami kell.
Jester
-
fatal`
titán
Tud valaki linket átfogó ReportViewer tutorialhoz?
Nyomtatnom kellene képet, táblázatot, többsoros szöveget és datagridviewt is, de nem tudom, hogy fogjak hozzá.
A printdocumentet nézegettem eddig, de a gdi-s drawstringnek elég sok része problémás (pl. kilogó szöveg, rossz sortörés stb.).
Lokális programról van szó (nincs szerver, meg semmi ilyesmi tehát az adott gépen kell a dokumentumot generálni).
[ Szerkesztve ]
-
Gülredy
tag
válasz Jester01 #2412 üzenetére
Volt egy feladat előtte de azzal sem mentem többre (más programozási feladat nem volt)
Itt a feltételezett előzmény:
A program inputja egyetlenegy kezdőállapot, outputja pedig a 10 lépés során az ágens által választott akciók, és mellé a világ aktuális állapotainak leírása. Pl.
Input: pozíció:A A: koszos B:tiszta
Output:
1 -- akció:szív pozíció:A A:tiszta B:tiszta
2 -- akció:jobbra pozíció A:tiszta B:tiszta akció:
3 -- akció:balra pozíció:A A:tiszta B:tiszta
4 -- ...........Tehát az lenne a lényege, hogy egy porszívó robotot kell készíteni, amely először bekér egy kezdőállapotot , majd a 10. lépés után kiírja hogy milyen lépést választott(?), és ha jól veszem ki akkor mind a 10et kiírja.
Ennyi volt az előzménye.Elég kezdő vagyok c#-ban így valószínűleg csak ezért okoz gondot ez, bár a tanár magyarázása is elég össze vissza. Tudnál segíteni hogy induljak el?
[ Szerkesztve ]
-
fatal`
titán
Újabb probléma.
Van egy reportom (rdlc), a fejlécbe szeretnék betenni egy képet, de egy szürke vonalat rak az aljára meg a tetejére (másik képpel is próbáltam, annak meg a jobb oldalára teszi), pedig a bordert nonera állítottam. Gondolom valami árnyék, vagy ilyesmi lehet, de nem találtam erre beállítást.
Hogy lehetne ezt eltűntetni?
-
Aronle
csendes tag
Sziasztok!
A következő feladathoz szeretném a segítségeteket kérni:
Kérjen be a felhasználótól egész számokat addig, amíg három egymás után beírt szám összege 8 nem lesz. Akkor a program érjen véget.Ezt a kódsort kaptam "megoldásként", de nem fordítható, nem értem a cikluson belüli egyenlőségek miértjét. Segítségeteket előre is köszönöm!
class Program
{
static void Main()
{
int darab = 0;
int szam1, szam2, szam3;do
{
szam1 = szam2;
szam2 = szam3;
szam3 = int.Parse(System.Console.ReadLine());
darab++;
}
while (darab < 3 || szam1 + szam2 + szam3 != 8);
System.Console.WriteLine("ok");
System.Console.ReadLine();
}
} -
Jester01
veterán
Azt próbálja csinálni, hogy mindig a három legutolsó számot jegyzi meg. Tehát amikor bekér egy újat, az előző kettőt eggyel hátrébb lépteti. Persze ehhez illene inkább tömböt használni. A fordító egyébként nem veszi észre, hogy a szam változókat nem kell inicializálni ezért kiabál (legalábbis nálam). A probléma megoldását az olvasóra bízom
Jester
-
Lacces
őstag
Hali!
Tömbös megoldás:
Igyekeztem követni a do-while szerkezetedet, de én benne elhelyezkedtem inkább egy IF-et így számomra átláthatóbb, de több megoldás is van :-)Szerintem is célszerű a tömbös, szerintem a legtöbb embernek elsőre ez ugrik be
1-50-ig futhat le a ciklus... max 50-ig próbálkozhatsz :-D Azért a végtelenségik ne! :-D
Ha a bevitel már nagyobb vagy egyenlő mint 3
Ha igena tömb utolsó 3 elemének az összege egyenlő-e 8-al?
Kiírom, hogy van eredmény
megszakítom a ciklus futását! (break utasítás)int[] tomb=new int[50];
int i = 1;
do
{
int temp;
temp = int.Parse(Console.ReadLine());
tomb[i] = temp;
if (i >=3)
{
if ( (tomb[i] + tomb[i - 1] + tomb[i - 2]) == 8)
{
Console.WriteLine(" Az utolsó 3 elem összege 8 ");
break;
}
}
i++;
} while (i<=50); -
Jester01
veterán
Ez nem az a tömbös megoldás amire én céloztam. Az helyes volt az eredeti programban, hogy csak annyi adatot tárolt el amennyi a feladathoz kellett. Ettől az még végtelen sorra működött ellentétben a tieddel. Én csak arra utaltam, hogy a szam1,2,3 változók helyett kellene a tömb, ezáltal a program általánosabb és szebb lenne.
Jester
-
ArchElf
addikt
Három megoldás, ami nem korlátoz... Ja és Parse helyett TryParse-t érdemes használni...
static void Tömb1()
{
int[] tomb = new int[] { 0, 0, 0 };
do
{
int temp;
if (!int.TryParse(Console.ReadLine(), out temp))
temp = 0;
tomb[2] = tomb[1];
tomb[1] = tomb[0];
tomb[0] = temp;
} while (tomb[0] + tomb[1] + tomb[2] != 8);
Console.WriteLine(" Az utolsó 3 elem összege 8 ");
}
static void Tömb2()
{
List<int> tomb = new List<int>(new int[] { 0, 0, 0 });
int sum;
do
{
int temp;
if (!int.TryParse(Console.ReadLine(), out temp))
temp = 0;
tomb.Add(temp);
tomb.RemoveAt(0);
sum = 0;
foreach (int val in tomb)
sum += val;
} while (sum != 8);
Console.WriteLine(" Az utolsó 3 elem összege 8 ");
}
static void TömbLinq()
{
List<int> tomb = new List<int>(new int[] { 0, 0, 0 });
do
{
int temp;
if (!int.TryParse(Console.ReadLine(), out temp))
temp = 0;
tomb.Add(temp);
tomb.RemoveAt(0);
} while (tomb.Sum() != 8);
Console.WriteLine(" Az utolsó 3 elem összege 8 ");
}AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Lacces
őstag
válasz ArchElf #2426 üzenetére
stevve, Jester01 köszi. Igen, nem az, de legalább fejből jött magamtól :-D És ez már félsiker. Egy nap olyan jó programozó leszek mint ti
AE Neked külön köszönet, a példakódért. Nagyon tetszett ez a megoldás, sosem találtam volna ki, ezt
Még List-eknél nem járok.
Hogyan működik a tomb.add() ? Tudom, hogy a List elemhez hozzáaadja a tempet.De ha már a List tartalmazza: 3, 4, 4
akkor hogyan tudja hozzáadni a 4. elemet?
(rendben vágom, hogy utána az 1. elemet törli)
Ahogy látom, hogy a List egy 3 elemű tömböt tartalmaz, és ez érdekel, hogy a háttérben a 4.-ket hogyan képes hozzáadni.TryParse, igen, már eszembe jutott, hogy ezt érdemes használni. De én akkor fórumon a Convert.ToDouble()-el hasonlítottam. Azt írták azért nem jó a Convert.ToDouble, mert az pluszban meghívja a TryParse()-t, meg olyat vettem észre, hogy false helyett 0-val tért vissza.
Parse-nek mi a hátránya a TryParse()-al szemben? Amiért nem javaslod?
Bocs de még egyetemen vagyok, és a legtöbb oldalt marha nehezen hozza be
-
ArchElf
addikt
A List, csak csinál egy listát a három elemű tömbből (és a tömböt utána el is dobja, úgy ahogy van). Alapból a lista nem korlátos gyűjetmény (Collection), így bármennyi elem hozzáadható, ha a méretét nem korlátozzuk le fixre.
Parse azért rosszabb, mint a TryParse, mert ha nem tud konvertálni (pl szám helyett szöveget adtál be), akkor dob egy FormatException-t, és azt le kell kezelni, hogy ne szálljon el a program.
AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
veterán
szívesen, nem kötekedni akartam, csak ezek a tömbös feladatok mindig felhúznak, mert elrugaszkodottak. Hiába tudsz tömböt kezelni, a valós életben ritkán jön elő, ha nem speckó területre megy az ember.
A példában meg leég 3 elem, összeadod, és nullázol, hogy jöhessen a köv. 3 szám, de persze kollekciókkal már mindjárt más.
[ Szerkesztve ]
-
Jester01
veterán
válasz ArchElf #2429 üzenetére
Ezek a megoldások mind működnek, de egyik sem túl hatékony. Mindig szem előtt kell tartani az adott adatszerkezet előnyeit és hátrányait valamint azt a tényt, hogy általában a programok lassúságának fő oka a memória foglalás illetve felszabadítás valamint a másolgatás.
Jelen esetre vetítve: vegyük észre, hogy a List elejéről törlés ugyanolyan másolgatást von maga után mint az első megoldásban lévő explicit mozgatás. Tehát lassú.
Ide kéremszépen egy cirkuláris buffer nevű adatszerkezet kell, ami egyszeri memóriafoglalással, másolgatás nélkül megoldja a problémát. MOD: és persze az összeget is nyilván kell tartani, nem mindig újraszámolni.
Nyilván a fentieknek akkor van értelme ha sok adattal, sokszor dolgozunk. A konkrét feladatban valószínűleg mindegy, hiszen a program leginkább a felhasználóra vár. Kivéve persze ha egy fájlt vagy másik program kimenetét irányítjuk bele.
Parse azért rosszabb, mint a TryParse, mert ha nem tud konvertálni (pl szám helyett szöveget adtál be), akkor dob egy FormatException-t, és azt le kell kezelni, hogy ne szálljon el a program.
Az addig igaz, hogy ez a különbség a kettő között. De ettől egyik sem rosszabb a másiknál, csak tudni kell mikor kell őket használni. Ha "helyben" tudod kezelni a hibás adatot, akkor TryParse, ha pedig csak blokk szinten vagy a hívóban akkor jó a kivételkezelés. Mérlegelni kell továbbá, hogy milyen gyakori a hibás bevitel, mivel a kivételkezelésnek esetenként jelentős többletköltsége van.
A te kódod egyébként nem túl szerencsés, mivel az értelmezhetetlen adatot csendben nullának veszi. Helyesebb lenne egyszerűen kihagyni. (Természetesen a felhasználó tájékoztatása mellett, de ezt ugye az itteni programocskákból szándékosan szoktuk elhagyni.)
Elnézésést a sok kötözködésért, igyekeztem konstruktív lenni.
[ Szerkesztve ]
Jester
-
ArchElf
addikt
válasz Jester01 #2431 üzenetére
NP
Egyébként a példákat inkább csak az azonos megvalósítás kedvéért hoztam.
A példáim inkább egyszerű szemléltető kódocskák voltak, mint valós problémára írt csontra optimalizált kódok. Abban mondjuk egzet;rtek, hogy a tanulók inkább tanuljanak egy kicsit (nem is kicsit) optimalizálni, és problémamentes kódot írni.De had engedtessék meg nekem, hogy magyarázkodjam kicsit:
Természetesen plusz egy változóval sokkal hatékonyabban (nagy tömbelemszám esetén) megoldható a probléma, de ebben az esetben... Lássuk be, hogy három értékadás kb ugyanannyi erőforrást igényel, mint két értékadás plusz egy modulus osztás (ráadásul memóriában kevesebb is).
List / Sum (Linq) egyértelműen pazarlás erre a célra, ezekben az esetekben csak azt szerettem volna bemutatni, hogy nem csak a tömb létezik a .NET struktúrában, és List-tel lehet hasonló dolgokat csinálni (ráadásul úgy, hogy munka oroszlánrészét megcsinálja helyettünk a környezet).
Mondjuk a MOD-ot nem igazán értem. Az összeget mindig újra kell számolni, hiszen, ha mást nem a régi tagot ki kell vonni, az újat pedig hozzá kell adni, három tömbelem esetén ez sem biztos, hogy előnyösebb.Emellett feltételeztem, hogy a kolléga nem nagyon konyít a kivételkezeléshez (bocsánat a feltételezésért), viszont olyan kódot nem szeretek írni, ahol a kivételek nincsenek minimálisan sem lekezelve. A kivételkezelést pedig nem itt gondoltam bemutatni...
Feltételeztem azt is, hogy esetleg már valami offiszos tapasztalata (excel), ahol az =Int("szöveg") nullát ad vissza, ezért az általam írt kód is ezt a sémát követi. Természetesen megoldható volna az is, hogy a temp = 0; helyett egy Console.Error.WriteLine-al hibaüzenetet dobjon + continue segítségével újra bekérjen adatot a kód (mondjuk úgy rémlik, hogy a kivételkezelés módja nem volt lespecifikálva).
Végül (még egyszer?): nem egy általános megoldást akartam adni (ami kód mennyiségben valószínűleg több is, ráadásul egy kezdő számára sokkal nehezebben felfogható egészben, mint rész-példák összegeként).
Ja, és egyáltalán nem sértődtem, és köszönöm az építő kritikát.
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
martonx
veterán
C# tanulók:
1.000 Ft-ot szerintem nagyon megér, és garantáltan több tudást ad, mint két félév C# az iskolában.
Én is részt akarok venni rajta, egy kis tudás frissítés sosem árt.
[ Szerkesztve ]
Én kérek elnézést!
-
Aronle
csendes tag
válasz ArchElf #2432 üzenetére
A feltételezés helytálló, pár hete tanulok programozni, példáidon keresztül könnyebb volt megérteni a probléma megoldását.
@Jester01: szakmailag biztosan így célszerű kivitelezni ezt a feladatot, ebben nem kételkedem, de még nem állok ezen a szinten. Ellenben díjazom, hogy a legmegfelelőbb kivitelezésre törekedtél.Köszönet mindkettőtöknek!
Valamint fel is vetnék egy következő feladatot, ha van egy kis időtök...
"Kérjen be addig számokat, míg nem adnak meg egy negatívat vagy nullát, az eddigi bekért számokat adja össze és nézze meg hogy van-e olyan egész szám, amelynek az eredmény, a faktoriálisa-e, vagy sem, ha igen irja ki hogy "faktoriális" + az érték, ha nem akkor írja ki, hogy nem az. "
Próbálkozásom:
class zh_feladat
{
static void Main()
{
System.Console.WriteLine("adjon meg számokat, a program összeadja őket, míg azok >=0, majd megvizsgálja, hogy a számok
összege faktoriális-e?);
int osszeg = 0;
int szam;
do
{
szam = int.Parse(System.Console.ReadLine());
if (szam > 0)
{
osszeg += szam;
}
}
while (szam >= 0);
{
for (int n = 0; n <= osszeg; n++)
{
int eredmeny = 1;
for (int i = 1; i <= n; i++)
{
eredmeny *= i;
}
{
if (osszeg == eredmeny)
{
System.Console.WriteLine("az összeg faktoriális");
}
else if (osszeg > eredmeny || osszeg < eredmeny)
{
System.Console.WriteLine("az összeg nem faktoriálisa egy szamnak sem");
}
}
System.Console.WriteLine("összeg: " +osszeg);
System.Console.ReadLine();
}
}
}
}először: remélem nem követtem el nagy kontárságot, ha igen elnézést miatta.
másodszor: a "dupla" for cikluson belül akartam összevetni, hogy az adott számok összege faktoriális-e?; ez így nem akar működni.
Így kérném segítségetek, előre is köszönöm!
(ps: bocs a hosszúra sikeredett postért) -
ArchElf
addikt
Na ezt már érdemes optimalizáltan csinálni
Kell hozzá egy kis mögöttes logika - kb mindent ki lehet használni, azok közül, amit jester az én példáimban javítandónak talált:
- nem kell feleslegesen - minden bekérés után - számolgatni (összeg, faktoriális), figyelmi kell a különbségeket, és csak akkor számolni, ha szükséges
- hibakezelést, rendesen megoldani
- ja, és ugye írtuk, hogy vagy tryparse, vagy kivételkezelés... hmm?A két for ciklust nem igazán értem...
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Aronle
csendes tag
válasz ArchElf #2435 üzenetére
Az említett két for ciklus az összehasonlítást végezte volna:
a 2.-ban generálódtak volna faktoriális értékek, melyek az összeghez lettek volna viszonyítva, de ez így nem működőképes.for ciklus helyett, ezt hogyan lehetne megvalósítani? (sajnos meg van kötve a kezem, nem rendelkezem még kell ismerettel)
"-figyelmi kell a különbségeket, és csak akkor számolni, ha szükséges"ami a tryparse-et illeti, a következőkben figyelek rá.
parse: én nem adok neki olyan bemenetet, ami problémát jelentene (csak tanulási célból készül, saját felhasználásra), élesben megértem a tryparse szerepét.Köszönöm a tanácsokat!
-
ArchElf
addikt
parse: én nem adok neki olyan bemenetet, ami problémát jelentene
Ilyeneknek soha nem szabad berögzülniük...Mintha autót építnél úgy, hogy nincs rögzítve a tengelyen a kerék, mert úgysem rögös a út...
Kis segítség:
Pozitív számokat adsz össze - tehát a számok összege folyamatosan nő. A számokat nem kell egyesével nyilvántartanod. A faktoriális összege is folyamatosan nö.
-> megjegyzed, hogy hoé tartasz a faktoriálisban, és ha az összeged nagyobb, mint az utolsó faktoriális összeg, akkorgyomorbólkb így:long összeg = 0;
long fakt_alap = 1;
long fakt_összeg = 1;
do
{
'... beolvasás
if (összeg == fakt_összeg)
{
Console.WriteLine(Az összeg [{0}] faktoriális, az alapja [{1}]", összeg, fakt_alap);
}
else if (összeg > fakt_összeg)
{
fakt_alap++;
fakt_összeg *= fakt_alap;
}
while (...);AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Jester01
veterán
válasz ArchElf #2438 üzenetére
Viszont kelleni fog egy belső ciklus is, mert lehet, hogy az összeg egyszerre több faktoriális lépést ugrik. Továbbá utána ismét meg kell nézni, nem lett-e egyenlő. (Tulajdonképpen csak utána kell megnézni, előtte nem kell.)
Induláskor pl. fakt_alap = fakt_összeg = 1, és ha az első szám amit beírunk 6, akkor azt nem veszi észre mivel csak a 2-re lép. De még ha 2-t is írunk be, azt se veszi észre, mivel a lépés után már nem nézi az egyezést.
Jester
-
Lacces
őstag
Sziasztok!
Elméleti kérdéseim lennének: (összevadászgattam java és c#)
Mi a kapcsolat az objektum és az őt definiáló osztály között?
Az objektum az osztály egy megvalósítása , példánya. Mást nem találtam...Hogyan tud deklarálni egy objektum referencia változót?
Ez mi? Ez alatt mit ért? Kerestem neten, és ilyen megoldások születtek: String, Array, magyarán Object osztály gyermekeinek az objektumai. Ez alatt mit érthetnek?Hogyan tud létrehozni egy objektumot?
new kulcsszóval és konstruktorhívássalHogyan tud deklarálni és létrehozni egy objektumot egyetlen utasítással?
ClassName objectName = new ClassConstructor();
Pont emiatt nem értem az objektum referencia változót, hogy mi az akar lenni. Mire gondol a tanár. Vagy csak simán erre gondol: Osztálynév ObjektumNév ?Mi a különbség a konstruktorok és a metódusok között?
Elnevezése az osztály neve.
Inicializálja az Osztályt
Nincs visszatérési értéke
Létrehozza a VMT-t (Virtual Method Tablet) -
martonx
veterán
???
Osztály: autó
Objektum: pl. Renault Thália 1.5 dízel, kék színű azaz az osztály megfelelően létrehozva beparaméterezve
És igen ez a Reanult Thália tulajdonképpen egy változó, mert átfestheted pirosra, rakhatsz rá másmilyen gumikat stb...Azaz:
Auto Thalia = new Auto();
Majd:
Thalia.kerek = Michelin;
Thalia.szin = kek;
és így továbbA többi kérdésedet végképp nem értem, mikor alájuk vannak írva a válaszok.
Én kérek elnézést!
-
fatal`
titán
Profi fejlesztők (és nem profik)
Az if (!DesignMode) kód használata lassítja a lefordított programot, vagy a fordító kigyomlálja ezt belőle? (hiszen release exe futtatáskor biztosan nincs design modeban az egész, így értelmetlen vizsgálat lenne)
-
Lacces
őstag
Hali!
Objektumoknál írtunk egy ilyen Equals()-t én csak most vettem észre, hogy az
n1.Equals(n3) esetén true-t ad vissza. Az a kérdésem, hogy miért?
(Nem hiszem, hogy a paraméter miatt lehet)(n1==n3 false, mert a két objektum más helyre mutat.)
public override bool Equals(object obj)
{
// as - Referenciát ad vissza, ami a jobb oldalon van, ha konvertálható
// ha nem, akkor null-t ad vissza!
Negyzet tmp = obj as Negyzet;
// Ha Nem sikeres a konverzió
if (tmp == null)
{
return false;
}
// Ha Sikeres a konverzió
return this.a == tmp.a;
}static void Main(string[] args)
{
Negyzet n1 = new Negyzet(2.0);
Negyzet n2 = new Negyzet(5.0);
Negyzet n3 = new Negyzet(2.0);
...
Console.WriteLine((n1==n2) + " " + (n1==n3)+ " " + (n2==n3));
Console.WriteLine(n1.Equals(n2)+ " " + n1.Equals(n3)+ " " + n2.Equals(n3)); -
Lortech
addikt
A Negyzet osztályod "a" mezője elvileg value type, így az override-olt equals metódusban a return this.a == tmp.a; sor miatt a két négyzet példány equals-szal összehasonlításával azt vizsgálod, hogy a két példány megfelelő "a" mezője "==" -e, és 2.0 egyenlő 2.0-vel (feltételezve, hogy Negyzet konstruktorában "a"-nak értékül adod a paramétert).
[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lacces
őstag
válasz Lortech #2449 üzenetére
WonderCSabo Köszönöm, igen azt én is észrevettem, de azthittem több van a háttérben.
Lortech Köszönöm, így kerek most, ezt a value type-ot hirtelen nem értettem az elején, de hogy így itt írtad, rájöttem, hogy "érték típus"
Amúgy ha a mező referencia típus, akkor ugyanúgy megvizsgálja, hogy a referencia típusban lévő értékek "=="-e ?
pl.: egy lista, ugyanazokkal az elemekkel?[ Szerkesztve ]
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- MSI FX720 MS-1754 Aka Terra MS-1773P 17,3 col FHD,Core I7 4/8,16 GB ram,Nvidia GPU/Intel,500Gb hdd
- LG OLED65C11LB Smart OLED Televízió, 164 cm, 4K Ultra HD
- Bomba ár! Fujitsu LifeBook U745 - i5-5GEN I 8GB I 256SSD I 14" HD+ I Cam I W10 I Garancia!
- HP ProBook 450 G6, 15,6" FHD IPS, I3-8145U CPU, 8GB DDR4, 256GB NVMe SSD, WIN 10/11, Számla, Garanci
- Bomba ár! Dell Latitude 5430 - i5-1235U I 16GB I 256SSD I HDMI I 14" FHD I Cam I W11 I NBD Garancia!
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen