list gemiddelde

Status
Niet open voor verdere reacties.

folgorn

Gebruiker
Lid geworden
23 jan 2014
Berichten
22
Hey

Ik heb dus een list gemaakt van getallen die ik kan toevoegen en die dan verschijnt in een datagrid(wpf).

Nu zou ik dus willen dat hij per groep van 10 het gemiddelde van die getallen berekent. Dus in mijn datagrid het gemiddelde van de 1ste 10 getallen dan het gemiddelde van de volgende 10 enz.

Ik had gedacht om dit met een loop te doen maar weet dus niet hoe ik het moet doen.
 
Waar loop je vast?

Je kunt met foreach of een FOR loop tot list.count() gebruiken? getallen optellen en door 10 delen. Beste toepassing en stijl is wat afhankelijk van de omstandigheden, maar in de basis lijkt het me een redelijk makkelijke oefening?
 
ja dus ik bedoel als ik 20 cijfers toevoeg. bv

10 10 10 10 10 10 10 10 10 5 = gemiddelde 9.5
20 20 20 20 20 20 20 20 20 10 = gemiddelde 19

dus dan heb ik in mijn datagrid vanboven naar onder 10 10 10 10 10 10 10 10 10 5 20 20 20 20 20 20 20 20 20 10
maar moet hij dus het gemiddelde tonen in groepen van 10. Mijn gemiddelde kan ik dan toevoegen in een nieuwe kolom in mijn datagrid ofwel in een listbox

het probleem is ik weet niet hoe ik ze moet berekeneen in groepen van 10 ik denk een loop in een loop maarja hoe begin je eraan om het gemiddelde te weten van alle getallen is het simpel maar in groepen van 10 blijkbaar niet
 
Beetje afhankelijk van wat je met de reeks wil doen die niet 10 getallen beslaan. Wat gebeurt er met de laatste 5 als je 75 getallen hebt?

zoiets:

Code:
            double ave=0;
            for (int j = 0; j < henk.Count(); j++)
            {
                if ((j % 10 == 0) && j > 0)
                {
                    ave = ave / 10;
                    MessageBox.Show(ave.ToString());
                    ave = 0;
                }
                else
                {
                    ave = ave + henk[j];
                }
            }

in dit geval gebeurt er niets met de laatste groep getallen. Eventueel kun je dat makkelijk oplossen door de nog bestaande waarde in AVE te delen door de resterende getallen indien nodig
 
Ja heb dus een stopwatch die de rondes bijhoud en dit is dus per sessie van 10.

Dan wil ik per sessie een gemiddelde zien zo kan je dus zien of het gemiddelde stijgt of daalt.

Ja die code die je gestuurd hebt kom ik iets raar uit. j % 10 wat betekent dat ik dacht dat dit de restwaarde betekent en geen gemiddelde berekenen ?

dus heb die henk veranderd door de uitkomst van mijn stopwatch. als ik de stopwatch stop op 3sec zegt hij 50.7

dus klopt niet.
 
Restwaarde idd, de restwaarde is 0 elke tien getallen. Het is een van de manieren om elke 10 stappen iets te doen.

De rest snap ik niet zo. Het enige wat er gebeurt is tien getallen optellen en delen door tien. Als er er dus 50 uitkomt moet er in die tien getallen dus totaal 500 hebben gezeten
 
ja de werking zit zo, er word elke dag getraind maar op woensdag zaterdag en zondag 2x
dus kom je uit op 10 trainingen per week die ik dan opsla in een JSON bestand. Maar ik zou graag
de prestaties per week willen zien met een gemiddelde dat ik dus kan zien of het gemiddelde stijgt of daalt.

probleem is

Code:
 string stopwatchtijd = string.Empty;

stopwatchtijd = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                    ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);

die stopwatchtijd is dus een stringwaarde.
dus weet niet of ik daaruit dan een gemiddelde kan halen ?
 
Dan zul je eerst naar je gewenste waarde om moeten zetten (bijvoorbeeld seconden). Dat was echter je originele vraag niet.
 
ja idd sry, ja het is me dus gelukt om mijn tijd uit die string te halen en om te zetten in int.

Dus heb jou code eens in mijn add button geplaats dus de button die elke keer een ronde tijd in mijn gridview plaatst.
Maar dan krijg ik dus al 4x een messagebox met geen juist gemiddelde en ook zit er nog maar 1 getal in mijn gridview.

en waar worden die getallen dan opgeteld ?
 
Met dit is het gelukt.

nog 1 klein probleempje ik vraag dus enkel de seconden op uit mijn timespan waardoor de tijd 0sec en 99miliseconden hij de average op 0doet waardoor ik dus een groot verschil in mijn gemiddelde kan hebben.

Nu met totalseconds kom ik hele rare getallen uit moet ik nog iets doen met totalseconds bv delen door iets of omzetten naar iets waardoor ik de juiste totalseconds bekom ?

alvast hartelijk bedank voor de hulp

Code:
  List<double> newNumberList = new List<double>();

            
                 // create a new list 

                 foreach (double itemInList in TimeElapsedItems.Items) // loop round all of your items
                 {
                     newNumberList.Add(itemInList);  // You will have to convert this to a double, since this is homework you can research on how to convert types (Casting)
                 }

                 double avg = newNumberList.Average();

                 ave++;


                 lbAverage.Items.Add(avg);



                 if (ave == 10)
                 {
                     lbAverage.Items.Add(avg);
                     ave = 0;
                 }
                 if (TimeElapsedItems.Items.Count == 10)
                 {
                     TimeElapsedItems.Items.Clear();
                 }
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan