Vraag & Antwoord

Programmeren

Kleinst absoluut verschil

6 antwoorden
  • Hallo, Ik ben bezig met een programmatje in c. Het programma moet het gemiddelde van een array getallen berekenen en dan het getal uit de array halen die het dichtst bij het gemiddelde zit. Nu heb ik gewoon een array en het gemiddelde kan ik berekenen. Ik vraag me alleen af hoe ik nu het getal uit de array kan pakken die het dichtst bij het gemiddelde zit. Ik heb ook gehoord van de functie abs, maar daar weet ik vrij weinig van, kan iemand me daar meer info over geven? MVG, Chris
  • Eerst het gemiddelde berekenen, dan een nieuwe array aanmaken met daarin het verschil tussen gemiddelde en getallen, die sorteren, en het bijbehorende getal uitpoepen. In plaats van een extra array kun je wellicht ook een tweedimensionaal array gebruiken. Of een loop maken, die per getal het verschil met het gemiddelde berekent, kijkt of het kleiner is dan het vorige verschil, en het bijbehorende getal in een variabele vasthouden. Denk dat jij meer hebt aan een cursus creatief denken. :) De abs functie is bedoeld om getallen positief te maken. Stel het gemiddelde van 1 en 3 is 2. Het ene verschil is -1, het andere +1. Met abs(-1) wordt het eerste verschil ook +1.
  • [quote:f20d004f09]Denk dat jij meer hebt aan een cursus creatief denken.[/quote:f20d004f09] lol, 5e week datk met de taal c werk, dus heb ook niet alle kennis in huis, maar die 2e array had ik indeed kunnen bedenken. bedankt voor de hulp.
  • Ik denk dat die laatste oplossing van gerben het makkelijkst is. Sorteren heeft alleen nut als je meerdere keren door die array moet zoeken. (duur gezegd kun je dan gebruik maken van de monotoniciteit van het array). Je moet 2 keer door de array lopen (met een for-loop). 1 keer om het gemiddelde te bepalen, en 1 keer om het kleinste verschil met het gevonden gemiddelde te bepalen. Hiervoor kun je de absolute waarde (maakt zowel positieve als negatieve getallen positief) van het verschil tussen het gemiddelde en de array-waarde gebruiken om de 'afstand' te bepalen. En last but not least... dit kan allemaal veeel gemakkelijker met Liberty Basic. Zoals wij Liberty Basic-ers altijd zeggen. :D
  • Is het ook mogelijk een hokje in de array helemaal leeg te laten. Want bij mij programma moet de gebruiker uitmaken wanneer hij stopt met invoeren, dat kan dus ook zijn voordat de array vol is. Ik moet wel een eendimentionale array gebruiken. Als de gebruiker 0 invoert dan stopt het inlezen van getallen. Nu heb ik het probleem dat als ik eerder 0 invoer dat de andere hokjes in de array vanzelf een waarde krijgen zonder dat ik die invoer. Hoe kan ik een index leeg laten, of kan dat niet?
  • [quote:b099390c60="chris_18"]Nu heb ik het probleem dat als ik eerder 0 invoer dat de andere hokjes in de array vanzelf een waarde krijgen zonder dat ik die invoer.[/quote:b099390c60] Die waarde hebben ze al vanaf het begin, niet pas vanaf het einde van de invoer. De reden hiervoor is dat een array gewoon een stuk geheugen is waar al enen en nullen staan. C(++) reserveert alleen het geheugen en laat de oude enen en nullen die daar al stonden gewoon staan. Een index leeg laten kan niet. Het beste is waarschijnlijk om nadat je de array aangemaakt heb alles te vullen met een nul. Of dit te doen met alle overige indices na de laatste invoer.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.