Diskuze: Vyhledávání nejčastějšího výskytu v poli
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 6 zpráv z 6.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Radit to nemusis, je to zbytecna rezie navic, mnozina moznych cisel je
konecna a relativne mala (cisla od 1 do 10).
Staci si nadefinovat pomocne pole treba integeru o 10 prvcich, pak projdi to
pole cisel a u kazdeho cisla vem jeho hodnotu a inkrementuj hodnotu v pomocnem
poli na indexu ktery odpovida hodnote cisla. A pak uz jen projdi pomocne pole a
zjisti ktery z tech deseti prvku ma nejvetsi hodnotu (cislo se vyskytlo v
nejvetsim mnozstvi).
Tak jsem to zkoušel podle Taskkilla. Návod od Petra jsem si musel
přečíst 5x 
Napsal jsem tohle:
import java.util.Arrays;
public class KU1LS {
public static void main (String[] args){
int m;
char odpoved;
do{
System.out.print("zadej pocet prvků pole: ");
m = VstupDat.ctiInt();
System.out.println();
int[] a = naplnPole(m);
tiskPole(a);
System.out.println();
Arrays.sort(a);
System.out.println("Seřazené pole:\n");
for (int cislo : a) {
System.out.print(" " + cislo + " ");
}
int nejcas_cislo=a[0];
int pocet_vyskyt=1;
int pocet_pomoc=0;
int pomoc=0;
for (int i=1; i<a.length; i++){
if (a[i]==nejcas_cislo){
pocet_vyskyt++;
if (a[i]>nejcas_cislo)
pomoc=a[i];
pocet_pomoc++;
}
if (a[i]>pomoc)
pocet_pomoc=0;
pomoc=0;
pomoc=a[i];
pocet_pomoc++;
if (pocet_pomoc>pocet_vyskyt){
pocet_vyskyt=0;
nejcas_cislo=0;
nejcas_cislo=pomoc;
pocet_vyskyt=pocet_pomoc;
}
}
System.out.println();
System.out.println("\ncislo: -------- " +nejcas_cislo);
System.out.println("vyskytlo se: " +pocet_vyskyt);
System.out.println();
System.out.print("\nChcete začít znovu? A,a = Ano; N,n = Ne: ");
odpoved=VstupDat.ctiChar();
while((odpoved=='N')||(odpoved=='n')){
break;
}
}while((odpoved=='A')||(odpoved=='a'));
}
static int[] naplnPole(int m){
int[] x = new int[m];
for (int i = 0; i<x.length; i++){
x[i] = (int)(Math.random()*10+1);
}
return x;
}
static void tiskPole(int[] x){
for (int i = 0; i<x.length; i++){
System.out.printf("%3d",x[i]);
}
System.out.println();
}
}
Ale jednou mi to napíše správný výsledek, ale při dalším výpočtu to
připíše k počtu výskytu +1 (např. 2 je tam 4x a napíše "Počet výskytu:
5", apod.). Ještě bych chtěl ošetřit to, když se tam některá čísla
objeví ve stejném počtu, např. 3x6 a 3x8, aby to vypsalo obojí, ale není
to nutné 
Kde v tom kódu mám chybu? Jen předem poprosím, neptejte se, proč to píšu
tak složitě nebo hloupě, jsem začátečník, u programování sedím, když
můžu, ale musím chodit do práce, která se bohužel počítačů moc
netýká, někdy se k programování nedostanu třeba 2 dny a k tomu ve škole
nemám jen javu, ale i jiné předměty.
Moc děkuji za případnou pomoc 
Udělej to tak jak říká Petr. Tohle je nečitelný mišmaš. Buď trochu
elegantnější.
Kouskuj si všechno do metod, které názvem popisují chování = necpi to
všechno do metody main, tam ať jsou pouze volání jedné či více metod.
Pro názvy v javě npoužívej podtržítka ale camelCase.
A hlavně: nepoužívej češtinu. Zvykni si psát kód anglicky 
Takže smaž to a napiš znovu dle rady Petra a nepoužívej v kódu toto:
System.out.println("\ncislo: -------- " +nejcas_cislo);
System.out.println("vyskytlo se: " +pocet_vyskyt);
ale napiš si na to metodu
static void println(String text, int number) {
System.out.println(text + number);
}
a podobne i na ostatni veci. Rozporcuj úlohu na trivialni nedelitelne casti, napis si metody a pak teprve pis vnitrek tech metod.
Držím palce
Petře omlouvám se ti. Z únavy jsem ti dal omylem dislike
Zareaguj a já ti dám like.
Sorry
Nevadi, ja to stejne neresim, like/dislike ma nulovou informacni hodnotu oproti prispevku. Pro zajimavost jeste prikladam reseni v java 8 stream api:
List<Integer> list = new Random().ints(100, 1, 10).boxed().collect(Collectors.toList());
System.out.println("Pole: " + list);
Map<Integer, Long> counted = list.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
counted.entrySet().stream().sorted((e1, e2) -> Long.compare(e2.getValue(), e1.getValue())).forEach(entry -> System.out.println("Cislo: " + entry.getKey() + ", pocet vyskytu: " + entry.getValue()));
Zobrazeno 6 zpráv z 6.