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

Odpovědět
leni9
nováček
Příspěvky: 14
Registrován: 07 lis 2013 20:09

Programování v Javě

Příspěvek od leni9 »

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;
}
Uziv00

Re: Programování v Javě

Příspěvek od Uziv00 »

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: 07 lis 2013 20:09

Re: Programování v Javě

Příspěvek od leni9 »

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

Re: Programování v Javě

Příspěvek od Uziv00 »

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: 07 lis 2013 20:09

Re: Programování v Javě

Příspěvek od leni9 »

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: 7411
Registrován: 23 pro 2010 09:23

Re: Programování v Javě

Příspěvek od faraon »

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: 12 lis 2004 16:36
Bydliště: Hradec Králové

Re: Programování v Javě

Příspěvek od Dix »

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.
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Pomoc s výběrem ntb na programování v .NET 25k
    od Kubasky » » v Rady s výběrem hw a sestavením PC
    1 Odpovědi
    4407 Zobrazení
    Poslední příspěvek od petr22

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