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 :)
Avatar
N-nojmi
Člen
Avatar
N-nojmi:19.5.2013 11:41

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:19.5.2013 11:43

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:19.5.2013 11:48

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
Зайчик:19.5.2013 11:56

č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:19.5.2013 12:00

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:19.5.2013 12:02

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:19.5.2013 12:04

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:19.5.2013 12:05

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
Зайчик:19.5.2013 12:06

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
Odpovídá na Зайчик
N-nojmi:19.5.2013 12:07

s cyklem foreach umim ;)

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
Зайчик:19.5.2013 12:07

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:19.5.2013 12:09

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:19.5.2013 12:15

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):19.5.2013 13:26

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.