Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
milan
Neregistrovaný
Avatar
milan:21.5.2013 21:01

Zdravím,

potřeboval bych menší radu ohledně listu. Mám list vytvořený list 6 uživatelů, každý má jméno, přijmení, pohlaví, věk a rok narození. Potřebuji mezi nimi najít všechny muže a udělat jejich průměrný věk. Chtěl jsem pomocí cyklu projít jednotlivé řádky a pokud je na řádku "muž" tak vzít "ítou" pozici na které se nachází věk, uložit hodnotu do pole a pokračovat dál, nakonec bych z hodnot uložených v poli udělal průměr, ale prakticky se mi to moc nedaří.

 
Odpovědět
21.5.2013 21:01
Avatar
Odpovídá na
Luboš Běhounek Satik:21.5.2013 21:12

Posli, co uz mas hotove :)

Nahoru Odpovědět
21.5.2013 21:12
https://www.facebook.com/peasantsandcastles/
Avatar
milan
Neregistrovaný
Avatar
milan:21.5.2013 21:17

Právě že mam hotový jen list uživatelů, nevím jakým způsobem ho mam procházet...kdybych to načítal ze souboru, tak použiju metodu split a pomocí cyklu bych prošel všechny řádky a vzal si potřebná data, ale nevím jak se to dělá v listu

 
Nahoru Odpovědět
21.5.2013 21:17
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na
Petr Nymsa:21.5.2013 21:20

Předpokládám že uživatele máš jako Objekt Uzivatel, kde máš tyto vlastnosti. Poté tedy projet cyklem, přes Foreach list. A když to je muž přičteš si hodnotu nebo někam zaznamenáš jeho věk.

Takže třída bude vypadat nějak takto. Napíšu to zjednodušeně, časem se snad naučíš to napsat líp

 class Uzivatel
    {
        // místo ošklivých public by se měly použít Properties - Vlasnosti
        public int vek;
        public string jmeno;
        public bool muz; // místo bool by se mělo použít Enum


        // další si dopiš

        public Uzivatel(string jmeno,int vek,bool muz)
        {
            this.vek = vek;
            this.jmeno = jmeno;
            this.muz = muz;
        }

    }

// někde v metodě main nebo jinde

 //testovací data
            List<Uzivatel> uzivatele = new List<Uzivatel>();

            uzivatele.Add(new Uzivatel("Pepa",15,true));
            uzivatele.Add(new Uzivatel("Alžběta", 15, false));
            uzivatele.Add(new Uzivatel("jakub", 35, true));
            uzivatele.Add(new Uzivatel("Jaroslav", 58, true));
            uzivatele.Add(new Uzivatel("Anna", 68, false));
            uzivatele.Add(new Uzivatel("Blažena", 15, false));
            uzivatele.Add(new Uzivatel("Hermelina", 25, false));

            int pocet = 0;
            int soucet = 0;

            // iterace uživateli
            foreach (Uzivatel p in uzivatele)
            {
                if (p.muz == true) // je to muž ?
                {
                    pocet++;
                    soucet += p.vek;
                }
            }

            Console.WriteLine(soucet/pocet);

Pokud něčemu z tohoto nerozumíš, což předpokládám, podívej se na zdejší seriál. zační základy a pak přejdi na OOP

Nahoru Odpovědět
21.5.2013 21:20
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
milan
Neregistrovaný
Avatar
milan:21.5.2013 21:37

List mam vytvořený, tak jak uvádíš, jen tam mám muže nebo ženu definované pomocí stringu, takže jsem zkoušel udělat podmínku:

if (uzivatele[0] == "muz")

protože na [0] pozici v listu mam pohlaví a pak jsem chtěl ukládat hodnotu věk na pozici[3] pomocí int.Parse do pole s kterým bych dál pracoval, ale tohle vypadá jednodušeji, navíc mi to s tím indexováním moc nešlo

 
Nahoru Odpovědět
21.5.2013 21:37
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na
Jan Vargovský:21.5.2013 21:44

Pošli tvůj kod, trošku nerozumím tomu, že máš na nějaké pozici věk atd ... takový to byl případ, kdyby jsi to měl v poli.
Minimálně bys to měl mít jak píše Zirko, takže pošli tvůj kod ať ti můžem popřípadě poradit

 
Nahoru Odpovědět
21.5.2013 21:44
Avatar
milan
Neregistrovaný
Avatar
milan:21.5.2013 21:48

Já myslel že list má indexaci obdobně jako pole

 
Nahoru Odpovědět
21.5.2013 21:48
Avatar
Jan Vargovský
Tvůrce
Avatar
Jan Vargovský:21.5.2013 21:59

To ano, ale ty indexuješ ty jednotlivé uživatele, když vezmu kousek kodu od Zirka, tak je to

("Anna", 68, false) // 0
("Blažena", 15, false) // 1
("Hermelina", 25, false) // 2

A ty k těm uživatelům přistupuješ k celým těm datům a k jednotlivým položkám jako jméno, věk atd přistupuješ přes tu tečkovou notaci a dostáváš se k těm property té třídy

 
Nahoru Odpovědět
21.5.2013 21:59
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na
Petr Nymsa:21.5.2013 22:01

Samozřejmě že má indexasi stejnou :) Ale je blbost dělat list kde budeš mít jméno,věk, muž/žěna, a pak zase jméno, věk .. nevyznáš se v tom. Proto tu máme OOP . Vytvoříš si objekt a vlistu budeš mít tyto objekty. Něco málo si o to zde přečti a pochopíš k čemu to je ;)

Nahoru Odpovědět
21.5.2013 22:01
Pokrok nezastavíš, neusni a jdi s ním vpřed
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 9 zpráv z 9.