Výskyt čísla v poli

Programovacie jazyky, rady, poradňa...
Pe7er
Amateur
Amateur
Príspevky: 25
Registrovaný: 22 jan 2009, 19:37

Výskyt čísla v poli

Príspevok od používateľa Pe7er »

Zdravím,

mám pole (pole1) s veľkosťou n, v ktorom sa vyskytujú celé čísla od 0 do m, potrebujem zistiť, koľko krát sa v tom poli jednotlivé čísla vyskytujú a uložiť ich do iného poľa (pole2), skúšal som niečo takéto

Kód: Vybrať všetko

var pom:Number=0;
	
	for (i=0; i<=m; i++){
		for (j=0; j<n; j++){
			if(pole1[j]==i){
			  pom=pom+1;
			}
		}
		pole2[i]=pom;
		pom=0;
	}


ale vychádzajú tam hrozne malé čísla
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Výskyt čísla v poli

Príspevok od používateľa audiotrack »

ten algoritmus je správne, čo znamená že hrozne malé čísla?
Pe7er
Amateur
Amateur
Príspevky: 25
Registrovaný: 22 jan 2009, 19:37

Re: Výskyt čísla v poli

Príspevok od používateľa Pe7er »

no napr pole1 má 500 prvkov, pri vypíse prvkov vidím, že 20ka sa tam vyskytuje cca 400krát, ale algoritmus napočíta iba 15

//autoeditácia príspevku (13 Apr 2012, 15:01)
no chyba bude zrejme niekde inde, kedže táto malá časť je len súčasťou väčšieho programu a keď som si to otestoval samostatne tak to funguje
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Výskyt čísla v poli

Príspevok od používateľa weroro »

Čo je to za jazyk? Tá deklarácia premennej mi pripomína ActionScript
Pe7er
Amateur
Amateur
Príspevky: 25
Registrovaný: 22 jan 2009, 19:37

Re: Výskyt čísla v poli

Príspevok od používateľa Pe7er »

áno je to ActionScript, sry zabudol som to napísať
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Výskyt čísla v poli

Príspevok od používateľa weroro »

Tak to skús takto:

Kód: Vybrať všetko

var pole:Array = new Array (1, 5, 8, 6, 2, 3, 5, 4, 4, 4, 5, 8, 7, 7, 4, 1, 2, 5, 6, 9, 9, 9, 2, 1, 0, 0, 5, 3, 6, 5, 4, 8, 6, 9, 5, 5, 5, 8, 5, 4, 2, 5, 8, 1);
Array.prototype.countDuplicates = function ():Array 
{
    var a:Array = this;
    a.sort ();
    var b:Number = a.length;
    var c:Array = new Array ();
    for (var i:Number = 0; i <= b; i++)
    {
        var d:Number = 0;
        for (var j:Number = i; j <= b; j++)
        {
            if (a[i] == a[j])
            {
                d++;
                continue;
            }
            c.push (a[i] + " = " + d + "x ");
            i = j - 1;
            break;
        }
    }
    return c;
};
trace (pole.countDuplicates()); 
Napísať odpoveď