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í.
Pouze tento týden sleva až 80 % na e-learning týkající se C a C++. Zároveň využij akce až 80 % zdarma při nákupu e-learningu - více informací.
c++ week

Diskuze: Algoritmus - nejčastěji vyskytující se hodnota

Aktivity
Avatar
Martin Štěpánek :24.9.2016 16:09

Ahoj,
nevíte jak sestavit algoritmus, který zjistí jaká položka v poli se vyskytuje nejčastěji?
Budu mít například pole žánrů:

Fantasy
Sci-fi
Sci-fi
Fantasy
Biografie
Fantasy
Sci-fi
Fantasy
Biografie
Fantasy

a potřebuji, aby mi to zjistilo, že zrovna žánr fantasy se vyskytuje nejčastěji. Teoreticky by se to dalo napsat:

if($zanr == 'Fantasy'){
 $fantasy++;
} else if($zanr == 'Sci-fi'){
$scifi++;
}

a pak zjistit, kde je největší hodnota. Problém je v tom, že nevím jaké položky (v tomto případě žánry) tam budou.
Předem děkuji za pomoc. :-)

Odpovědět
24.9.2016 16:09
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Michal
Člen
Avatar
Odpovídá na Martin Štěpánek
Michal:24.9.2016 16:36

Ahoj, zkus tohle:

$zanry = ['Fantasy', 'Sci-fi', 'Sci-fi', 'Fantasy', 'Biografie', 'Fantasy', 'Sci-fi', 'Fantasy', 'Biografie', 'Fantasy'];

$poctyPolozek = array_count_values($zanry); // Nové pole s počty výskytů prvků v původním poli ["Fantasy" => 4, "Sci-fi" => 3, ...].

$nejcetnejsi = array_search(max($poctyPolozek), $poctyPolozek); // Z předchozího pole vybere ten prvek, který má největší hodnotu (počet výskytů).

echo $nejcetnejsi; // Vypíše Fantasy.
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
24.9.2016 16:36
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Michal
Martin Štěpánek :24.9.2016 18:25

Funguje, dík :-)

Nahoru Odpovědět
24.9.2016 18:25
Všechno jde naprogramovat, chce to jen čas a chuť...
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.