Not Impressed Skrevet 2. oktober 2014 Del Skrevet 2. oktober 2014 Hei! Har en oblig i programmering (java) som lyder: "Du skal lage et program som trekker tilfeldige tall og lagrer dem i en array. Hvor mange tall som skal trekkes er avhengig av arrayens lengde, som er parameter i klassens konstruktør. (Hele arrayen skal fylles!) Programmet skal imidlertid bare lagre de tall som ikke er trukket allerede. (Dvs. arrayen skal inneholde KUN ÈN forekomst av hvert tall.) Alle tall som trekkes skal være i intervallet 100 til 1000, begge grenser inkludert. Disse grensene skal defineres som navngitte konstanter.Når alle tallene er generert og lagret i arrayen, skal programmet finne den største, minste og gjennomsnittlige verdien av tallene i arrayen. I tillegg skal det finne den verdien som er nærmest gjennomnstittetsverdien.Til slutt skal programmet skrive ut, i et tekstområde, tallene i arrayen, samt resultatet av beregningene som er beskrevet over:" Noen som kan hjelpe meg med hvordan man finner gjennomsnitt og tallet som er nærmest gjennomsnitt? Står fast!!! Lenke til kommentar
Emancipate Skrevet 2. oktober 2014 Del Skrevet 2. oktober 2014 Gjennomsnitt regnes ut ved at man legger sammen alle elementene og deler på antall elementer. Gjennomsnitt av [1, 4, 6, 8] er (1+4+6+8)/4 = 4,75. Du må bruke en form for loop til å gjøre dette. Når du vil ha hjelp med programmering så bør du legge ut det programmet du har allerede i code-tags. Det blir det samme som å levere inne en bil på verksted: du må levere inn bilen for å få hjelp med den. Lenke til kommentar
Joachim Hansen Skrevet 7. april 2015 Del Skrevet 7. april 2015 0. For å sikre unike verdier må du iterere gjennom arrayen og finne ut om denne verdien befinner seg i noen av skuffene 1.sorter arrayen -> 2. da vil du finne at den største og minste verdien befinner seg i hver sin ende av arrayen 3. For gjennomsnitt: må du regne sum av alle elemenne og dele på antall elementer 4. For å finne det elementet som er nærmest gjennomsnitt verdien, kan du benytte deg av: int currentLowest = array[0]; for(int i = 1; i < array.length; i++) if(abs(gjennomsnittVerdi, array[i]) < currentLowest) currentLowest = abs(gjennomsnittVerdi, array[i]); Lenke til kommentar
jonny Skrevet 8. april 2015 Del Skrevet 8. april 2015 (endret) Jeg ville ikke sortert array'en, det er unødvendig. 1. Deklarer 3 variabler for å holde på minimumsverdi, maksimumsverdi og summen av alle array-elementer (sett alle lik første element i array'en) 2. Gå gjennom hele array'en (unntatt første element, du har jo allerede satt variablene til denne verdien), og oppdater minimumsverdien hvis verdien i array'en er mindre enn denne, maksimumsverdien hvis verdien i array'en er større enn denne, og oppdater variabelen med summen av alle array-elementer ved å legge til verdien i array'en 3. Når du har gått gjennom hele array'en inneholder de 3 variablene nettopp det jeg sa de skulle brukes til i punkt 1, gjennomsnittet finner du ved å dele summen på antall elementer i array'en 4. Deklarer en ny variabel for å holde på indeksen til elementet som er nærmest gjennomsnittsverdien, sett denne til 0 5. Gå gjennom array'en på nytt (unntatt første element, som i punkt 2), hvis forskjellen mellom verdien i array'en og gjennomsnittsverdien er mindre enn forskjellen mellom array-verdien med indeks lik variabelen du opprettet i punkt 4 og gjennomsnittsverdien, oppdaterer du variabelen med indeksen 6. Nå inneholder variabelen i punkt 4 indeksen til verdien som er nærmest gjennomsnittet, da er det bare å skrive ut resultater Her er et forslag til hvordan koden kan se ut (den er ikke testet): class ArrayStats { public final int min; public final int max; public final int sum; public final double avg; public final int avgIndex; public ArrayStats(int[] values) { int min = values[0]; int max = values[0]; int sum = values[0]; int avgIndex = 0; // find minimum, maximum and sum of all elements for (int i = 1; i < values.length; i++) { if (values[i] < min) min = values[i]; else if (values[i] > max) max = values[i]; sum += values[i]; } this.min = min; this.max = max; this.sum = sum; // calculate average value this.avg = (double)sum / values.length; // find index of value closest to average value for (int i = 1; i < values.length; i++) { if (Math.abs(values[i] - this.avg) < Math.abs(values[avgIndex] - this.avg)) avgIndex = i; } this.avgIndex = avgIndex; } } Endret 8. april 2015 av jonny Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå