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

kimi999
Level 4
Level 4
Příspěvky: 1103
Registrován: duben 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod kimi999 » 19 zář 2014 19:54

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();
                }
           }

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 20 zář 2014 06:17

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: duben 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod kimi999 » 20 zář 2014 12:42

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: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 20 zář 2014 15:45

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: duben 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod kimi999 » 20 říj 2014 17:03

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: říjen 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod agil » 25 říj 2014 14:16

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;
}
}
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: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 25 říj 2014 14:32

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: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 25 říj 2014 16:32

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

(pravil K. H. Borovský o cenzuře internetu)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Uprava vzorce
    od junis » 27 črc 2024 15:43 » v Kancelářské balíky
    6
    5234
    od junis Zobrazit poslední příspěvek
    02 srp 2024 18:02
  • Úprava pc pro Kingdome Come Deliverance 2
    od barryk10cz » 07 led 2025 17:00 » v Rady s výběrem hw a sestavením PC
    13
    3698
    od Hangli Zobrazit poslední příspěvek
    09 led 2025 22:42
  • Raspberry - M2 disk - uprava a zaloha oddilu Příloha(y)
    od L.L » 18 srp 2024 10:32 » v Problémy s hardwarem
    3
    3701
    od L.L Zobrazit poslední příspěvek
    19 srp 2024 14:39
  • bitmapová grafika - úprava fotografií, retuše, filtry.
    od zuzana3 » 10 kvě 2025 11:32 » v Design a grafické editory
    2
    5100
    od zuzana3 Zobrazit poslední příspěvek
    10 kvě 2025 17:31

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti