Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Přepsání podmínky do OOP

C# .NET .NET (C# a Visual Basic) Přepsání podmínky do OOP American English version English version

Aktivity (1)
Avatar
David
Neregistrovaný
Avatar
David:3.11.2013 13:08

Ahoj, jsem začátečník tak prosím berte na to ohled. Dokázal by mě někdo poradit jak tuhle podmínku přepsat do OOP ? Nutně bych to potřeboval nevím si rady. Pokud by měl někdo čas tak dokonce přepsat. Sám nemám představu jak to napsat. Podmínka by měla řadit podle jména a podle věku. Takhle to také funguje jak to mám napsaný, ale nemohu to takto nechat. Děkuji všem co pomohou ani nevíte jak by jste mi pomohly.

private void Serad(string podle)
{

for (int i = pole.Length; i > 1; i--)
{

for (int j = 1; j < i; j++)
{

pruchodny++;
if (podle == "Vek")
if (pole[j - 1].Vek > pole[j].Vek)
{

goto zmena;

}
if (podle == "Name")
if (pole[j - 1].Name.Compa­reTo(pole[j].Na­me) > 0)
{

goto zmena;

}

goto konec;

 
Odpovědět 3.11.2013 13:08
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na David
David Čápka:3.11.2013 13:11

Místo celého toho balastu stačí napsat:

uzivatele.OrderBy(u => u.Vek);

Na příkaz goto zapomeň.

Nahoru Odpovědět  +2 3.11.2013 13:11
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
slowk
Člen
Avatar
Odpovídá na David Čápka
slowk:3.11.2013 13:19

I ty cykly mohu smazat ?

 
Nahoru Odpovědět 3.11.2013 13:19
Avatar
Odpovídá na David
Jakub Lásko[Saarix]:3.11.2013 13:28

Tohle mě spíš připomíná jeden z jazyků z minulé soutěže. GOTO jsem opravdu už dlouho neviděl.

Nahoru Odpovědět 3.11.2013 13:28
Časem je vše možné.
Avatar
slowk
Člen
Avatar
slowk:3.11.2013 13:29

Moc nerozumím tomu jak to mám zapsat. Jak to do toho vložím. A co jsem nenapsal bude se věk nebo jméno řadit podle toho jako stisknu tlačítko, takže se to bude řadit vždy jen jedno.

 
Nahoru Odpovědět 3.11.2013 13:29
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na slowk
David Čápka:3.11.2013 13:50

Ty nerozumíš podle toho kódu více věcem, to by bylo asi na déle. Přečti si zdejší tutoriály, alespoň ty úplně základní, abys uměl používat podmínky a cykly. Základy OOP tu jsou taky.

Nahoru Odpovědět 3.11.2013 13:50
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
slowk
Člen
Avatar
Odpovídá na David Čápka
slowk:3.11.2013 13:59

Máš pravdu nerozumím.. c# opravdu neumím a snažím se to tak letmo pochopit. Jenže potřebuji to do zítra udělat. A prostě si nevím rady. Nebyl by někdo ochotný třeba v mailu mi to nějak pomoct vyřešit ?

 
Nahoru Odpovědět 3.11.2013 13:59
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na slowk
Jan Vargovský:3.11.2013 14:00

Napiš co konkrétně to má dělat, luštit kód z goto se mi fakt nechce.

 
Nahoru Odpovědět 3.11.2013 14:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na slowk
Kit:3.11.2013 14:00

Však ti David Čápka napsal řešení.

Nahoru Odpovědět 3.11.2013 14:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
slowk
Člen
Avatar
slowk:3.11.2013 14:02

Mám náhodně generovaný jména a k tomu se mi generuje věk to se opakuje 100 krát,takže mám sto jmen a stokrát k tomu věk. Na stránce jsou 2 tlačítka a jedno má řadit podle jména a druhý podle věku.

 
Nahoru Odpovědět 3.11.2013 14:02
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na slowk
Jan Vargovský:3.11.2013 14:12

http://leteckaposta.cz/792398672

EDIT: Protože to za 3 týdny z uložiště vypadne, tak tu hodím alespoň důležité části pro ostatní :

class Uzivatel
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public override string ToString()
        {
            return string.Format("{0} - {1}", Name, Age);
        }
    }
// Seřazení dle jména
uzivatele.OrderBy(u => u.Name).ToList();
// Seřazení dle věku
uzivatele.OrderBy(u => u.Age).ToList();
// Seřazení dle jména a pak věku
uzivatele.OrderBy(u => u.Name).ThenBy(u => u.Age).ToList();

POZN. Ty dotazy vrací novou kolekci!!!
Né že vám to jen seřadí, protože můžete mít dotaz třeba, kde vyberete navíc uživatele, které jsou starší než 20 ( .Where( u => u.Vek > 50)) atd...

Editováno 3.11.2013 14:16
 
Nahoru Odpovědět  +1 3.11.2013 14:12
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Jan Vargovský
David Čápka:3.11.2013 14:15

Tomu říkám rychlost :D Pěkné.

Nahoru Odpovědět 3.11.2013 14:15
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Jan Vargovský
David Čápka:3.11.2013 14:19

Ještě ma napadlo, že Sort na listu by mělo brát taky delegát, takže by se to mohlo rovnou třídit místo nahrazování kolekce. Byl by ale asi problém s bindingem.

Nahoru Odpovědět 3.11.2013 14:19
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na David Čápka
Jan Vargovský:3.11.2013 14:24

Tím bindingem nevím co myslíš, ale ofc by to šlo. Včera jsem si to zrovna zkoušel :)

kolekce.Sort( (u1, u2) => u1.Vlastnost.CompareTo(u2.Vlastnost))
 
Nahoru Odpovědět 3.11.2013 14:24
Avatar
slowk
Člen
Avatar
slowk:3.11.2013 14:29

když já to mám na webu, ne formu :(

 
Nahoru Odpovědět 3.11.2013 14:29
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na slowk
David Čápka:3.11.2013 14:39

To říkáš brzo :D Si to uprav.

Nahoru Odpovědět 3.11.2013 14:39
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.