如何创建一个函数来计算并返回均值,最大值和最小值?

时间:2018-10-29 07:25:50

标签: c++ function loops

这是我要尝试的操作,我想创建一个函数,该函数将计算并返回(使用通过引用)平均值,最大值和最小值。对C ++来说有点新,所以我非常感谢您的帮助。

这正是我想要做的:

  • 程序描述了它应该做什么
  • 提示用户输入1到10之间的数字,然后用正浮点数填充数组
  • 使用函数输出浮点数组的内容
  • 使用函数从浮点数组中计算平均值,最大值和最小值。这些值是通过引用变量传回的
  • 输出计算值
  • 如果用户在任何时候输入了无效的输入,请再次提示他们
  • 安全终止

代码如下:

//include go here
#include <cstdio>
#include <iostream>
#include <cfloat>

using namespace std;


//Constants go here
const int MAX = 10;
const int MIN = 1


//outputs overview of program to user 

void displayOverview();



//prompts user to enter a number between min and max and return it
//validated using a loop

int getIntInRange(int min, int max);



//prompts user to enter a floating point number that is > 0
//validated using a loop

float getPositiveFloat();



//prompts user for size of array (< size)
//fills nums with that many floating point values

int fillArray(float nums[], int size);


//outputs the array

void printArray (float arr[], int Size);



  //Computes and returns the mean, maximum, and minimum

void computesValues(float arrr[], int size, float &mean, float &max, float &min);



int main(){

  displayOverview();


  float myArr[MAX];
  int size = fillArray(myArr, MAX);

  return 0;
}


//Prompt user to enter a number between Min and max
//If user entered a number within the range, is valid is true
//If user entered a number not within min and max, output sorry not in range

int getIntInRange(int min, int max){

  int userInput = -1;
  bool isValid = false;
  while(!isValid){

    printf("Please enter an integer between %d and %d\n", min, max);

    scanf("%d", &userInput);
    if(min <= userInput && userInput <= max){
      isValid = true;
}else{
  printf("Sorry, that is not in range\n Please try again\n");
}
  }

  return userInput;
}


//int numVals
int fillArray(float nums[], int size){

  int numVals = getIntInRange(MIN, MAX);

  for(int i=0; i< numVals&& i<size ; i++){

    nums[i] = getPositiveFloat();

  }


  return numVals;
}

//Prompt user to enter a positive number
//if User enters a number that is not positive, output "Not a Positive"
float getPositiveFloat(){

  float input;
  do{
    cout << "Please enter a positive number\n";
    cin >> input;
    if(!(input>0)){
      cout << "Not a positive!\n";

    }

  }while(!(input>0));

  return input;


}


//Introduction to the program
void displayOverview(){

  cout << "Welcome to my program. You will see how magically I can compute things " << 
"from numbers!!" << endl;

}


//Print an array
void printArray(float arr[], int size){

  for (int i = 0; i<size; i++){
    cout << arr[i] << " ";
  }
}


//Compute Min, max and mean.
void computesValues (float arr[], int size, float &mean, float &max, float &min){



}

1 个答案:

答案 0 :(得分:1)

void computesValues (float arr[], int size, float &mean, float &max, float &min)
{
    float sum = 0.0;
    for (int i = 0; i<size; i++){
        sum = sum+ arr[i]; 
    }
    mean = sum/size;
    max = arr[0];
    for (int i = 1; i<size; i++){
        if(arr[i] > max)
            max = arr[i];
    }
    min = arr[0];
    for (int i = 1; i<size; i++){
        if(arr[i] < min)
            min = arr[i];
    }
    printf("mean = %f max = %f min = %f\n", mean, max, min);
}
  • 平均值是数组元素之和的平均值:您必须将数组元素相加并除以元素数
  • 要计算最大值,请将第一个元素设置为max,将其与其他元素进行比较,并在其他任何元素超过该元素时进行更新。
  • 要计算最小值,请将第一个元素设置为min,将其与其他元素进行比较,如果其他任何一个元素小于它,则对其进行更新。