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

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
kimi999
Level 4
Level 4
Příspěvky: 1103
Registrován: 13 dub 2011 11:37

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

Příspěvek 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();
                }
        	}
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

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

Příspěvek 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í!
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
kimi999
Level 4
Level 4
Příspěvky: 1103
Registrován: 13 dub 2011 11:37

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

Příspěvek 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
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek 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;
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
kimi999
Level 4
Level 4
Příspěvky: 1103
Registrován: 13 dub 2011 11:37

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

Příspěvek 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.
agil
Level 2
Level 2
Příspěvky: 181
Registrován: 08 říj 2010 21:58

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

Příspěvek 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 == cislo)
indexMandatMax =i;
}
}
immortal-world.net - přijďte si zahrát!
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek od CZechBoY »

agil: K tomu by měla sloužit metoda IndexOf :)
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

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

Příspěvek od faraon »

agil píše: Int indexMandatMax;
void FindIndex(int cislo)
{
for (i=0; i<4; ++i)
{
if (stranaMandat == 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)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na „Programování a tvorba webu“