Programování v Javě

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

leni9
nováček
Příspěvky: 14
Registrován: listopad 13
Pohlaví: Žena
Stav:
Offline

Programování v Javě

Příspěvekod leni9 » 17 lis 2014 13:20

Ahoj,
mám za úkol udělat program, který seřadí zadané hodnoty pomocí BubbleSortu a poté projde to seřazené pole a vypíše hodnoty, které se tam opakují a kolikrát se opakují.
Řekla bych, že to mám napsané správně, ale školnímu validátoru se to pořád nelíbí.

Jde o to, že pokud mám třeba posloupnost [1, 3, 4, 5, 6, 7, 7, 8, 8, 9], mělo by mi to vypsat: "Max. pocet je 2 x 7". Mně to ovšem vypíše 2 x 8.

Tady je kus kódu, který by to měl ošéfovat. Nevíte někdo, kde by mohla být chyba?

Kód: Vybrat vše

int v = 0;           // pocet opakovani
int h = 0;          // cislo, ktere se opakuje
int pom = 0;

for (int i = 0; i < pole.length; i++) {
   for (int j = pole.length - 1; j >= 0; j--) {
      if (pole[i] == pole[j]) {
      pom++;
      }      
   }
      if (pom > v){
      v = pom;
      h = pole[i];
      pom = 0;
      }
   pom = 0;
}

Reklama
Uziv00
Pohlaví: Nespecifikováno

Re: Programování v Javě

Příspěvekod Uziv00 » 17 lis 2014 17:59

Na tuhle posloupnost je 2x8 správně a mělo by být ještě 2x7. Pokud tenhle kód používáš jako rutinu pro vyhledávání, pak to máš špatně ošéfováno - výpis by měl následovat hned jak se zjistí počet opakování > 1.
nebo můžeš mít další proměnné x,y,z. Pokud bude počet opakování > 1, pak do x dáš v (počet opakování), do y h (číslo) a z inkrementuješ o 1. Celkový výsledek pak bude v poli x(), x(), z(),

leni9
nováček
Příspěvky: 14
Registrován: listopad 13
Pohlaví: Žena
Stav:
Offline

Re: Programování v Javě

Příspěvekod leni9 » 17 lis 2014 21:10

Já vím, že je oboje správně, ale jako úkol mám zadáno, že se musí vypsat to číslo, které je nejmenší, pokud jich tam bude více. To s x, y, z nechápu :? :smile:

Uziv00
Pohlaví: Nespecifikováno

Re: Programování v Javě

Příspěvekod Uziv00 » 17 lis 2014 21:54

musí vypsat to číslo, které je nejmenší

No to jsi ale do úkolu nenapsal...:D
Tak aby bylo jasno - nečekej kód, protože my zde vaše úkoly neřešíme.
A za další, pokud má najít to nejmenší, pak dle tvého kódu je to první dvojice. A to je takový problém, když najdu první dvojici vyskočit z cyklu a zobrazit wocojde?

leni9
nováček
Příspěvky: 14
Registrován: listopad 13
Pohlaví: Žena
Stav:
Offline

Re: Programování v Javě

Příspěvekod leni9 » 18 lis 2014 17:57

Tak nebuď hned tak nepříjemnej. ;)
Kód nečekám, jen jsem chtěla vědět, jak to mám udělat.
Jo, to asi není problém...

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: Programování v Javě

Příspěvekod faraon » 18 lis 2014 18:46

Hele Léňo, vždyť je to úplně jednoduché, prostě si tam přidej ještě dvě proměnné, například cislo a pocet, do nich si hned na začátku odlož to nejnižší číslo jaké tam máš ať se od něčeho můžeš odpíchnout. Potom projeď celé seřazené pole zdola nahoru, a spočítej každé další číslo do toho tvého h, a pokud tam bude víckrát než v těch mých dvou proměnných, tak ho tam zkopíruješ. Když bude větší číslo se stejným počtem, neobjeví se ti tam.

Mimochodem, jednopísmenné názvy proměnných jsou pěkná prasárna, to se hodí tak na indexy do smyček a nějakou velmi dočasnou lokální proměnnou, například pomocnou pro prohození dvou čísel mezi sebou, ale jinak vždy používej slovní názvy!

P.S. A tuhle znáš? :P

"Král Lávra má dlouhé oslí uši, král je ušatec!

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

Uživatelský avatar
Dix
Level 2
Level 2
Příspěvky: 184
Registrován: listopad 04
Bydliště: Hradec Králové
Pohlaví: Muž
Stav:
Offline

Re: Programování v Javě

Příspěvekod Dix » 19 lis 2014 11:18

Ten kod je zbytecne slozity - dva for cykly v sobe, kdyz uz mas to pole serazene (treba tim bubble sortem). Staci ti jeden pruchod (forem), kde si budes inkrementovat pocet vyskytu dokud budes v ramci stejneho cisla. Jakmile narazis na jine cislo (nebo konec pole), tak ten aktualni pocet porovnas s maximem a pokud je vetsi, tak si ulozis nove maximum (spolu s hodnotou toho cisla) a ten citac zase vynulujes.


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

Kdo je online

Uživatelé prohlížející si toto fórum: Google [Bot] a 2 hosti