Archief - Flash: help bij bepalen van grootste getal

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

tinbie

Legacy Member
ik lees een array in van 10 getallen

getallen = new array(10)

allemaal gedaan

nu moet ik daar het grootste ingelezen getal van hebben
en het kleinste


en dan ook nog een vraagje hoe je daar het kwadraat van berekent

getal*getal of is er daar een specifieke code voor ?

Bigbuddha

Legacy Member
of the top of my head

Code:
var getallen:Array= new Array();

function fillArray(){
	for (var i = 0; i < 10; i++) {
		getallen[i] = Math.round(Math.random()*100);
	}
	getHighest();
}

function getHighest(){
	var highestNum:Number = 0;
	for(i=0;i<getallen.length;i++){
	 if(getallen[i]>highestNum)
	 	highestNum = getallen[i];
	}
	trace("hoogste nummer = " + highestNum);
	trace("kwadraat = " + highestNum*highestNum);
}

fillArray();

Squall-sX-

Legacy Member
Gewoon twee variabelen aanmaken, en het eerste getal van de array hierin opslaan. Dan doorloop je de array, en als het getal kleiner is dan dat in de kleinste variabele, dan overschrijf je deze, en als het getal groter is dan de grote variabele, dan overschrijf je de die. Op het einde heb je dan twee variabelen met het grootste en het kleinste getal. Het kwadraat is altijd getal maal getal. Waarom zou je daar nog een apparte functie voor willen gebruiken?

tinbie

Legacy Member
ik heb het dus gedaan zoals BigBuddha Squall-Sx- zeiden
maar het probleem is dat hij geen getal weergeeft ook niet NaN ofzo
totaal nix

function grootsteEnkleinste() {
for (i=0; i<=Getallen.length; i++) {
if (Getallen<iKleinste) {
iKleinste = Getallen;
} else if (Getallen>iGrootste) {
iGrootste = Getallen;
}
}
}

GLX

Legacy Member
als wat heb je iKleinste geïnitialiseerd?
doe voor alle veiligheid voor het opreoepen van grootsteEnKleinste()
iKleinste =0;

-> post eens gans je code

kwadraat:
Math.sqr(getal) //dat dacht ik toch

Kn0t

Legacy Member
Als je iKleinste op 0 initialiseert zal het ook niet werken hé, tenzij der negatieve getallen in de array zitten ;)
En vermits die variabele wss automatisch op 0 wordt geïnitialiseerd zal je probleem daar misschien aan liggen?
best iGrootste en iKleinste initialiseren op Getallen[0]

Bigbuddha

Legacy Member
Op voorzet van Kn0t

Code:
function grootsteEnkleinste() {
	var iGrootste:Number = Getallen[0];
	var iKleinste:Number = Getallen[0];
	for (i=0; i<=Getallen.length; i++) {
		if (Getallen[i]<iKleinste) {
			iKleinste = Getallen[i];
		}
		if (Getallen[i]>iGrootste) {
			iGrootste = Getallen[i];
		}
	}
	trace("hoogste nummer = "+iGrootste);
	trace("kleinste nummer = "+iKleinste);
}

Zien dat je je iGrootste, iKleinste initialiseert.
kleinste niet op 0 initialiseren anders is 0 altijd kleinste.


Er zijn ongetwijfeld nog andere kortere oplossingen. Maar deze is vrij logisch en duidelijk

LunchBox

Legacy Member
wel je kan ook gewoon sorten (doet intern wat hier gebeurt maar verwisseld ze dan nog van plaats etc) en dan de eerste/laatste zijn kleinste/grootste.. het is niet dat het over berekeningen gaat waar 36pc's voor nodig zullen zijn vermoede'k.

Bigbuddha

Legacy Member
Voorzet van LunchBox, en koel afgewerkt ;)

Code:
function fillArray2() {
        var Getallen:Array = new Array();
	for (var i = 0; i<10; i++) {
		Getallen[i] = {number:Math.round(Math.random()*100)};
	}
	grootsteEnkleinste2();
}

function grootsteEnkleinste2() {
	Getallen.sortOn(number);
	trace("hoogste nummer = "+Getallen[0]["number"]);
	trace("kleinste nummer = "+Getallen[Getallen.length-1]["number"]);
}

fillArray2();

Dece

Legacy Member
LunchBox zei:
wel je kan ook gewoon sorten (doet intern wat hier gebeurt maar verwisseld ze dan nog van plaats etc) en dan de eerste/laatste zijn kleinste/grootste.. het is niet dat het over berekeningen gaat waar 36pc's voor nodig zullen zijn vermoede'k.
idd lijkt me ook het eenvoudigste/ snelste

var getallen = new array(10);

function sortByNumber(a, b) {
return (a > b);
}

getallen = [13, 52, 33, 2, 25, 14, 3, 77, 8];
getallen.sort(sortByNumber);
trace(getallen);

output --> 2,3,8,13,14,25,33,52,77


dankzij http://actionscript-toolbox.com/arrayobject2.php

tinbie

Legacy Member
thx voor de reply's :)
volgens mij moet het dus via de methode van Lunchbox het gemakkelijkst gaan
alleen krijg ik nu nog stees geen output bij mijn iKleinste en iGrootste

als die laptop hier nu nog de code wil posten kunnen jullie zelf eens zien

tinbie

Legacy Member
dan maar het belangrijkste in stukjes

Code:
Getallen = new Array(10);
iTeller = 0;
iSommetje = 0;
knop1.onRelease = function() {
	invoeren();
};
function invoeren() {
	if (iTeller<10 and iInvoer>1 and iInvoer<10) {
		Getallen[iTeller] = iInvoer;
		iTeller += 1;
		iSommetje += Number(iInvoer);
		sMededeling = " ";
	} else if (iTeller == 10) {
		iSom = iSommetje;
		//iKleinste = Getallen.sort(kleiner);
		//iGrootste = Getallen.sort(groter);
		//grootsteEnkleinste();
		grootsteEnkleinste2[HAAKJES VERGETEN]();
		product();
		kwadraad();
	} else {
		sMededeling = "Je moet een getal ingeven >1 en <10";
	}
}

tinbie

Legacy Member
Sorry, maar het werkt wel :p

had zelf klein foutje gemaakt die ik gezien heb bij het posten hier


mijns excuses
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan