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

Permalänk
Medlem

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;
}

Permalänk
Medlem

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

Permalänk
Medlem

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;

Permalänk
Medlem

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;
}

Permalänk
Medlem

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.

Permalänk
Hedersmedlem
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.

Visa signatur

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

Permalänk

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; }

Permalänk
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); }

Permalänk
Medlem

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;
}

Permalänk
Medlem

@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.