Hjälp med att räkna ut medelvärdet i c++

Trädvy Permalänk
Medlem
Registrerad
Dec 2016

Hjälp med att räkna ut medelvärdet i c++

har gjort ett program som räknar ut maxvärdet på en vektor med 10 element med en funktion. Hur skall jag göra samma program men att räkna ut medelvärdet

#include <iostream>

using namespace std;

int max(int v[] , int n)//här ska jag ha en använda en float huvud "float average (int v[], int n)

{
int current_max = v[0];
for(int i=0; i<n; i++) {
if (current_max < v[i])
current_max = v[i];
}

return current_max;
}
int main(void)
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int maxValueInArr;

maxValueInArr=max(arr, 10);
cout << maxValueInArr;

return 0;
}

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2005

Innan vi grottar ner oss i C++, hur skulle du på papper räkna ut medelvärdet av ett antal tal?

Trädvy Permalänk
Medlem
Registrerad
Dec 2016

hmmmm

@Wishie:

jo jag tänkte nått sånt här men jag får inte in det i funktionen

int sum = 0;
int average = 0;
int array[10] = {1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < 10; ++i)
sum+=array[i];
average = sum/10;
cout<<"Average:"<<average;

Trädvy Permalänk
Medlem
Registrerad
Dec 2016

Snart där

Så nu har jag gjort en medelvärde räknare som main funktion men hur gör jag den till en funktion som jag beskrev i början på frågan

#include <iostream>

using namespace std;

int main()
{
const int size = 10;

int array[size] = {1,2,3,4,5,6,7,8,9,10};

float sum = 0;

for (int i = 0; i < size; ++i)
sum += array[i];

float average = sum/size;

cout << "Average:" << average;
}

Trädvy Permalänk
Medlem
Plats
Värnamo
Registrerad
Aug 2007

Det du har använt i din kod är en array. Ta istället en titt på c++'s vektor som finns i standardbibliotek, det är mycket enklare att skicka med denna till en funktion. Börja med att ta en titt på denna sidan http://en.cppreference.com/w/cpp/container/vector, finns exempel på hur du använder den längst ner.

Trädvy Permalänk
Moderator
Registrerad
Aug 2007
Skrivet av akadot:

Så nu har jag gjort en medelvärde räknare som main funktion men hur gör jag den till en funktion som jag beskrev i början på frågan

Du har ju själv svarat på denna fråga i din första post.

Använd inte SweClockers för att få färdiga svar till skoluppgifter. Om du upptäcker att du inte förstår hur du ska lösa en uppgift så finns nästan alltid svaret i anteckningar och material som du fått under kursen. Inte mycket mening att gå en programmeringskurs om man bara vill ta sig igenom den utan att lära sig något.

Använd gilla för att markera nyttiga inlägg!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2009

Det du vill göra är att flytta all kod som gör själva beräkningen till en egen funktion, och sedan anropa denna från main-funktionen:

#include <iostream> using namespace std; int main() { const int size = 10; int array[size] = {1,2,3,4,5,6,7,8,9,10}; // Anropa funktion calculateMean och skicka med variabeln "array" som parameter. // Funktionen skickar tillbaka ett värde som alltså är medelvärdet av talen. Detta returnerade värde är det du skriver ut. float average = calculateAverage (array); cout << "Average: " << average; }

// Någon annanstans skapar du funktionen calculateAverage som tar en parameter av typen int[] och returnerar ett värde av typen float. float calculateAverage (int[] array) { float sum = 0; for (int i = 0; i < size; ++i) sum += array[i]; float average = sum/size; // Istället för att direkt skriva ut resultatet så skickar du tillbaka resultatet till main-funktionen. return average; }

NZXT H2, OCZ ModXStream-PRO 600W, MSI P67A-C45, Intel i5 2500K @ 4.4GHz, Gigabyte GTX 460, 4GB Corsair Vengeance DDR3 1600MHz CL9 (2x2GB), OCZ Agility 60GB, Seagate Barracuda 250GB, 2x Western Digital Caviar 1TB

Trädvy Permalänk
Medlem
Plats
Uppsala
Registrerad
Dec 2008
Skrivet av artive:

Det du har använt i din kod är en array. Ta istället en titt på c++'s vektor som finns i standardbibliotek, det är mycket enklare att skicka med denna till en funktion. Börja med att ta en titt på denna sidan http://en.cppreference.com/w/cpp/container/vector, finns exempel på hur du använder den längst ner.

När du säger "enklare", hur menar du då? Jag ser inte varför det skulle bli enklare bara för att vi blandar in std::vector i leken. På vilket sätt blir koden nedan enklare när man skickar en vector istället för adressen till din array?

void foo(int a[]) { } void passAddress() { int a[100]; foo(a); }

Trädvy Permalänk
Medlem
Registrerad
Dec 2016

Har löst det och tack för all hjälp!!

Tack för all hjälp verkligen. Uppskattas plus att jag lärt mig mycket mer av det nu

#include <iostream>

using namespace std;

float medel(int v[], int n)
{
float medelSum = v[0];
for (int i = 1; i < n; ++i)
medelSum += v[i];
float average = medelSum/n;

return average;
}

int main()
{
int values[] = {3,8,9,88,6,8,57,91,576,207};
int n = 10;

float average = medel (values,n);
cout << "Medelv\x84rdet \x84r: " << average;
return 0;
}

Trädvy Permalänk
Medlem
Plats
*
Registrerad
Feb 2004

@akadot:
Försök bli av med din variabel n som håller reda på antalet element du har; Du skall alltså inte behöva skicka detta till din funktion.

Med lite Googling så borde du kunna lösa det.