Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akce až 50 % zdarma při nákupu e-learningu. 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í.
Slevovy týden 3/50

Diskuze: Neexistující index hodnoty v poli

Aktivity
Avatar
user
Tvůrce
Avatar
user:26.6.2012 0:01

Cus,
Mám problém s jednou konkrétní metodou.

Kód (popis níže):

public List<int> OperaceSPrvocisli()
        {

            List<int> vysledky = new List<int>();
            List<int> prvocisla = PolePrvocisel();
            //int hranice = prvocisla.Count - 1;
            for (int b = 0; b < prvocisla.Count; b++)
            {
                for(int a = b+1; a <= prvocisla.Count; a++)
                {
                    int soucin = 0;
                    switch (operace.ToLower())
                    {
                        case "soucin":
                            soucin = prvocisla[b] * prvocisla[a];
                            break;
                        case "soucet":
                            soucin = prvocisla[b] + prvocisla[a];
                            break;
                        default:
                            soucin = prvocisla[b] * prvocisla[a];
                            break;
                    }
                        vysledky.Add(soucin);
                }
            }
            return vysledky;
        }

metoda OperaceSPrvocisly má za úkol násobit/sečíst (podle atributu třídy) prvočísla v poli mezi sebou (tzn. "každý s každým"), tyto výsledky pak zapisovat do nového pole, které pak metoda vrátí. Pole s prvočísly (se kterými se pak pracuje) vrátí metoda PolePrvocisel().
Nějakou chybu dělám ve volání hodnot pole při prováděné operaci s prvočísly:

soucin = prvocisla[b] * prvocisla[a];

Tady to hází chybu:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index.

Nevím kde dělám chybu, prosím o pomoc.
Díky

 
Odpovědět
26.6.2012 0:01
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na user
David Jančík:26.6.2012 4:07

U druhého for máš podmínku <= Count vrací velikost pole. Ovšem poslední index je Count - 1. Tj. bys tam měl mít jako u prvního <. A u prvního Count - 1.

Nahoru Odpovědět
26.6.2012 4:07
Zapomeň, že je to nemožné a udělej to ;)
Avatar
user
Tvůrce
Avatar
Odpovídá na David Jančík
user:26.6.2012 10:46

Ano jo, ja sem na to úplně zapoměl.
Děkuji ti.

 
Nahoru Odpovědět
26.6.2012 10:46
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 3 zpráv z 3.