Stránka 1 z 1

VS - C#, úprava nejvyšší hodnoty v poli

Napsal: 19 zář 2014 19:54
od kimi999
Zdravím,

programuji v C# ve Visual Studiu a potřeboval bych následující.
V poli "stranaMandat" mám rozděleny počty mandátů, protože rozdělení je počítáno přes % a nějaké % hlasů se ztratí u stran pod 5 % a proto zde nastává problém že se občas stane, že je rozděleno jen 199 nebo 201 křesel, potřeboval bych zjistit největší (to by měla splnit funkce "Max" ale teď nevím, jak pokračovat abych nezjistil jen to číslo (třeba 76) ale abych zjistil že se jedná o stranaMandat[2].

Uvedu ještě i příklad:
stranaMandat[0] = 50
stranaMandat[1] = 25
stranaMandat[2] = 76
stranaMandat[3] = 25
dohromady tedy 201 a potřeboval bych aby mi funkce řekla že se jedná o stranaMandat[2] a já od něj mohl odečíst jeden bod tak, aby se změnilo i v poli pro budoucí operace, protože takto mi to bohužel jen vypíše číslo. Nebo pokud to dělám špatně a doporučili by jste mi řešit tento problém přes něco jiného než Max, budu rád.

Děkuji

Kód: Vybrat vše

if (kontrola != 200) //zkontroluje, zde je počet rozdělených mandátů roven 200
           {
                if (kontrola > 200)
               {
                    label39.Text = PocetMandatu.ToString();
                    stranaMandat.Max();
               }
                if (kontrola < 200)
                {
                    label39.Text = PocetMandatu.ToString();
                    stranaMandat.Max();
                }
           }

Re: VS - C#, úprava nejvyšší hodnoty v poli

Napsal: 20 zář 2014 06:17
od faraon
Něco takového?

Kód: Vybrat vše

int index(int n)
    {
    for (i=0; i<4; ++i)
        if (stranaMandat[i] == n)
           return n;
    return -1;
    }

nejvyssi = index(stranaMandat.Max());

Pokud by tam bylo víc stran se stejným počtem mandátů, najde jenom tu první!

Re: VS - C#, úprava nejvyšší hodnoty v poli

Napsal: 20 zář 2014 12:42
od kimi999
Nefunguje mi to, zkoušel jsem několik možností jak to vsunout do programu ale vždy mi to vyhodilo několik chyb. Nešlo by třeba jen zjistit to "i"? Když by mi to vypsalo do proměnné že "i = 2", dál bych s tím už věděl jak pracovat.
Děkuji

Re: VS - C#, úprava nejvyšší hodnoty v poli

Napsal: 20 zář 2014 15:45
od CZechBoY
Takt řeba přes LINQ... stačí trochu pohledat na googlu.

Kód: Vybrat vše

var maxIndex = stranaMandat.Aggregate((l, r) => l.Value > r.Value ? l : r).Key;

Re: VS - C#, úprava nejvyšší hodnoty v poli

Napsal: 20 říj 2014 17:03
od kimi999
Já sice různé návody najdu, ale potom si to neumím upravit tak, aby mi to fungovalo v projektu. Trochu mně to mrzí, neboť mně programování baví, ale hlavu na nějaké profesionálnější programování asi nemám.

Re: VS - C#, úprava nejvyšší hodnoty v poli

Napsal: 25 říj 2014 14:16
od agil
Pokud znáš hodnotu a chceš zjistit index pole ve kterým leží, není problém.
Píšu na tabletu, takže se omlouvam :D

Něco takoveleho
Int indexMandatMax;
void FindIndex(int cislo)
{
for (i=0; i<4; ++i)
{
if (stranaMandat[i] == cislo)
indexMandatMax =i;
}
}

Re: VS - C#, úprava nejvyšší hodnoty v poli

Napsal: 25 říj 2014 14:32
od CZechBoY
agil: K tomu by měla sloužit metoda IndexOf :)

Re: VS - C#, úprava nejvyšší hodnoty v poli

Napsal: 25 říj 2014 16:32
od faraon
agil píše:Int indexMandatMax;
void FindIndex(int cislo)
{
for (i=0; i<4; ++i)
{
if (stranaMandat[i] == cislo)
indexMandatMax =i;
}
}


faraon píše:

Kód: Vybrat vše

int index(int n)
    {
    for (i=0; i<4; ++i)
        if (stranaMandat[i] == n)
           return n;
    return -1;
    }

nejvyssi = index(stranaMandat.Max());


Najdi 10 rozdílů 8)