我的虚函数问题

时间:2018-01-14 22:46:13

标签: c++

无论我尝试多少次,程序都不会运行,如果我这样做,我会得到新的错误。有些人帮我这个吗? void函数是正确的。我认为被调用的函数有问题我不确定我刚刚开始使用c ++四天前。

#include<iostream>
using namespace std;

void calcStats(int , double );

int main()
{
    int num[3];
    for(int i=0; i<3; i++)
    {
        cout << "enter a number "<<endl;
        cin >> num[i] ;
    }
    cout <<"your Number are "<< num[0]<< " , " <<num[1]<< " , "<< num[2]<< endl;

    calcStats(num[2] &maximum ,&minimum, &avg);
    cout <<"hightes number is" << maximum<<endl;
    cout<< "lowest number is" << minimum<< endl;
    cout<< "avg is" << avg<< endl;

    return 0;
}


void calcStats(int num[2], int &maximum, int &minimum, double &avg)
{
    maximum = num[0];
    minimum = num[0];

    // find maximum
    if (num[1]>maximum)
        maximum = num[1];
    if (num[2]>maximum)
        maximum = num[2];

    // find minimum
    if (num[1]<maximum)
      maximum = num[1];
    if (num[2]<maximum)
      maximum = num[2];

    // find average
    avg = static_cast<double>(num[0] + num[1] + num[2])/3.0;
}

2 个答案:

答案 0 :(得分:3)

要做的一些事情要考虑

  • 格式化代码。以此为指导。
    https://google.github.io/styleguide/cppguide.html
  • 为每项任务设置不同的功能
    而不是将一个大函数calcStats()分成多个小函数,例如getMax(), getMin(), getAverage()。 请勿对该功能使用含糊的名称。需要明确函数的作用而不查看它的定义。例如,除非我查看代码,否则我不清楚calcStats()做什么。另一方面,我知道getMax()做了什么,它返回最大值。

实际问题是什么?

问题在于声明:
void calcStats(int, double) - 2个参数
与定义不符:
void calcStats(int [2], int &maximum, int &minimum, int &avg) - 4个参数
在声明中,您承诺传递2个参数,一个整数和一个double。但是当涉及到实际的定义时,你会说这个函数采用一个大小为2的整数数组,一个对变量maximum,minimum和avg的引用。

错误#1:定义和声明应符合
声明:void calcStats(int [], int &, int &, double &)
定义:void calcStats(int [3], int &min, int &max, double &average){}

错误#2:确保传递正确的参数
 如果函数期望3个整数的数组,请确保给出3个整数的数组。没有更多,没有更少。记住int [3]表示3个整数的数组,第一个是在索引0处。如果混淆则查找数组。

最重要的是

格式化代码。如果他们无法阅读,没有人可以帮助你。

答案 1 :(得分:0)

Azimjon指出,您的代码中存在一些错误,这是一个工作示例:

http://rextester.com/QKG16761