IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.

Diskuze: Problém s funkcí Min()

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
95pavel
Člen
Avatar
95pavel:22.8.2013 8:11

Zdravím,

chtěl bych se zeptat jestli někdo ví z jakého důvodu mi nefunguje funkce Min() - potřebuju zjistit minimální prvek z pole. Ze stejného pole zjišťuji i maximum (Max()) a to bez problémů funguje.

                int pocetMereni = Convert.ToInt16(pocetM.Text);
                double minHodnota = 0;
                double maxHodnota = 0;
                int x = 0;

                double[] poleM = new double[100];

for (int i = sloupce; i < sloupce + pocetMereni; i++)
                {
                    for (int y = 1; y < radek; y++)
                    {
                        poleM[x] = Convert.ToDouble(tabulka.Rows[y].Cells[i].Value);
                        x++;
                    }
                }


                maxHodnota = poleM.Max();
                minHodnota = poleM.Min();

                MessageBox.Show("max: "+ maxHodnota +"min: " + minHodnota);

Dekuju za odpověď.

 
Odpovědět
22.8.2013 8:11
Avatar
matesax
Tvůrce
Avatar
Odpovídá na 95pavel
matesax:22.8.2013 9:12
int

        pocetMereni = int.Parse(pocetM.Text),
        maxHodnota = 0,
        minHodnota = 0,
        x = 0;

double[] poleM = new double[100];

for(int cellIndex = sloupce; cellIndex < sloupce + pocetMereni; cellIndex++)
        for(int y = 1; y < radek;  x++, y++)
        {
                poleM[x] = Convert.ToDouble(tabulka.Rows[y].Cells[cellIndex].Value);

                if(poleM[x] > maxHodnota)
                        maxHodnota = x;

                if(poleM[x] < )
                        minHodnota = x;
        }

MessageBox.Show("max: "+ poleM[maxHodnota] +"min: " + poleM[minHodnota]);

V té prasárně se nelze vyznat, tak jsem se jen pokusil... Moc prosím o řádné OOP přejmenování. (Šlo by to Anglicky?) Convert sem nepatří. Text se parsuje...

Editováno 22.8.2013 9:15
 
Nahoru Odpovědět
22.8.2013 9:12
Avatar
matesax
Tvůrce
Avatar
matesax:22.8.2013 9:16

Koukám ještě:

if(poleM[x] < minHodnota)
    minHodnota = x;

Jo a min hodnota nemůže být 0 - nastav ji na první hodnotu z cyklu - pardon - ale fakt jsem zápolil, abych se v tom vyznal...

Editováno 22.8.2013 9:18
 
Nahoru Odpovědět
22.8.2013 9:16
Avatar
matesax
Tvůrce
Avatar
matesax:22.8.2013 9:46

Aj - tak teď jsem chyboval já:

int

       pocetMereni = int.Parse(pocetM.Text),
       maxHodnota = 0,
       minHodnota = 0,
       x = 0;

double[] poleM = new double[100];

for(int cellIndex = sloupce; cellIndex < sloupce + pocetMereni; cellIndex++)
       for(int y = 1; y < radek;  x++, y++)
       {
               poleM[x] = Convert.ToDouble(tabulka.Rows[y].Cells[cellIndex].Value);

               if(poleM[x] > poleM[maxHodnota])
                       maxHodnota = x;

               if(poleM[x] < poleM[minHodnota])
                       minHodnota = x;
       }

MessageBox.Show("max: "+ poleM[maxHodnota] +"min: " + poleM[minHodnota]);

A může tam být ta 0...

 
Nahoru Odpovědět
22.8.2013 9: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 4 zpráv z 4.