Diskuze: Sečtení hodnot v Listu

C# .NET .NET (C# a Visual Basic) Sečtení hodnot v Listu American English version English version

Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Zdravím,
v programu, který vytvářím potřebuji udělat metodu na vypsání ceny všech aut, které mám uložené v listu.

public List<Auto> auta = new List<Auto>();
public void VypisCenuAut()
        {
            Console.WriteLine("Celková hodnota aut v bazaru je: {0} kč.", ? );
        }

nevím bohužel co sem napsat.
Nebo budu muset sečíst hodonotu aut mimo metodu a sem ji pak dosadit?

Díky od odpověďi.

Odpovědět 19.5.2013 11:41
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na N-nojmi
Petr Nymsa:

Ano nebou použít LINQ ale stačí klasický cyklus. Tedy proiteruješ každé auto a do nějaké proměnné (celkový součet) přičteš hodnotu auta. nakonec to vypíšeš.

Ta metoda VypisCenuAut je v jaké třídě ? Pokud v objektu Auto, tak je to špatně. Jedno Auto nemůže vypsat cenu ostatních

Nahoru Odpovědět 19.5.2013 11:43
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

metodu mám ve třídě Autobazar.

Nahoru Odpovědět 19.5.2013 11:48
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Зайчик
Člen
Avatar
Odpovídá na N-nojmi
Зайчик:

čau, jelikož máš list plnej třídy auto, předpokládám že ve třídě budeš mít nějakou metodu "getSum" která vrací hodnotu ceny auta. Potom je to jednoduché.

public double getCarsSum(List<Auto> cars){
    double sum = 0;
    foreach(Auto car in cars)
        sum += car.getSum();
    return sum;
}
// a tady ta tvoje metoda na vypsání
public void VypisCenuAut(){
    Console.WriteLine("Celková hodnota aut v bazaru je : " + getCarsSum(auta) + "kč!");
}
Nahoru Odpovědět 19.5.2013 11:56
Коммунизм для нашего будущего!
Avatar
matesax
Redaktor
Avatar
Odpovídá na Зайчик
matesax:

Nebude jednodušší zdědit IEnumerable, či jinou podobnou generiku, dát tam metodu CostAll - a tu naplnit rekurzivně každým Itemem?

Tedy každý Item bude mít metodu z interface pro poslání své hodnoty - v onom listu pak bude stačit zavolat jedinou metodu...

Editováno 19.5.2013 12:04
 
Nahoru Odpovědět 19.5.2013 12:00
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Зайчик
Petr Nymsa:

Měl jsi ho to nehcat napsat sám :P Takhle to akorát zkopíruje :) Věděl jak na to :) Jenom se patl jestli to nejde napsat na jeden řádek.

Nahoru Odpovědět 19.5.2013 12:02
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na N-nojmi
Petr Nymsa:

Můžeš také použít LINQ

 class Auto
    {
        public int Cena { get; private set; }

        public Auto(int cena)
        {
            this.Cena = cena;
        }
    }

// main

 List<Auto> list = new List<Auto>();

            foreach (int i in Enumerable.Range(0, 10))
                list.Add(new Auto(i * 10));

            Console.WriteLine(list.Sum(x => x.Cena));

Cyklem foreach si vytvořím 9 aut a nastavím jim cenu i*10 - výsledek 450

Nahoru Odpovědět 19.5.2013 12:04
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

nejsem bohužel na takové úrovní v OOP jako vy.... takže to musím řešit nějakou jednoduchou ( pro mě )cestou..... a ano radši bych na to přišel sám, jenom potřebuju popostčit správným směrem a mohužel většinu z toho co jsem mi poradili ani neznám :D

Nahoru Odpovědět 19.5.2013 12:05
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Зайчик
Člen
Avatar
Odpovídá na matesax
Зайчик:

zase spadni nohama na zem, už vidím jak to bude dávat dohromady člověk co si neví rady s foreach cylem ^^

Nahoru Odpovědět 19.5.2013 12:06
Коммунизм для нашего будущего!
Avatar
N-nojmi
Člen
Avatar
Nahoru Odpovědět 19.5.2013 12:07
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Зайчик
Člen
Avatar
Odpovídá na N-nojmi
Зайчик:

v tom případě nevím proč sem píšeš že nevíš jak se to dělá ;)

Nahoru Odpovědět 19.5.2013 12:07
Коммунизм для нашего будущего!
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

nevěděl jsem jestli je to správná myšlenka, tak sem se chtěl jenom zeptat.

Nahoru Odpovědět 19.5.2013 12:09
Není hloupých lidí, jen lidí co málo používají google...
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

takhle by to taky šlo ?

class Autobazar
    {
        public string Adresa { get; set; }
        public int Pokladna { get; set; }

        public List<Auto> auta = new List<Auto>();



        public Autobazar(string adresa, int pokladna)
        {
            Adresa = adresa;
           this.Pokladna = pokladna;
        }

        public void PridejAuto(Auto auto)
        {
            if (auto.Cena <= Pokladna)
            {
                auta.Add(auto);
                Pokladna -= auto.Cena;

            }
        }


        public void ProdejAuto(Auto auto)
        {
            auta.Remove(auto);
            Pokladna += auto.Cena;
        }

        public void VypisCenuAut()
        {
            Console.WriteLine("Celková hodnota aut v bazaru je: {0} kč.", auta.Sum(x => x.Cena));
        }




    }
Nahoru Odpovědět 19.5.2013 12:15
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Michal Žůrek (misaz):

Pokud to funguje, tak proč ne?

Nahoru Odpovědět  +1 19.5.2013 13:26
Nesnáším {}, proto se jim vyhýbám.
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 14 zpráv z 14.