0

试图找到最低分和最高分,我不断收到错误

argument of type "double" is incompatible with parameter of type "double*"

代码:

cout << "The lowest of the results = " << find_lowest(score[5]);
cout << "The highest of the results = " << find_highest(score[5]);

system("Pause");


}

double find_highest(double a[])
{
double temp = 0;
for(int i=0;i<5;i++)
{
    if(a[i]>temp)
        temp=a[i];
}
return temp;
}

double find_lowest(double a[])
{
double temp = 100;
for(int i=0;i<5;i++)
{
    if(a[i]<temp)
        temp=a[i];
}
return temp;
}
4

4 回答 4

1

正如@jogojapan 指出的那样,您将不得不更改这些

  cout << "The lowest of the results = " << find_lowest(score[5]);
  cout << "The highest of the results = " << find_highest(score[5]);

  cout << "The lowest of the results = " << find_lowest(score);
  cout << "The highest of the results = " << find_highest(score);

您的函数需要一个双精度数组,而不是双精度元素。

于 2013-11-10T06:46:05.687 回答
0

“double*”是指向“double”类型变量的指针。你写过

cout << "The lowest of the results = " << find_lowest(score[5]);

并且 "score[5]" 返回数组中的第 6 个元素score。您只需要

cout << "The lowest of the results = " << find_lowest(score);

在 C 和 C++ 中,数组可以衰减为指针,并在用作函数参数时执行。find_lowest score 期望double a[]哪个衰减到double*,但是您试图将 score 的第 6 个元素传递给它,它是 a double,而不是 adouble*

于 2013-11-10T06:46:25.143 回答
0

score[5] 是分数数组 (0,1,2,3,4,5) 中位置 5 的双精度数。如果你想发送分数数组的前 6 个元素,你可能想尝试这样的事情:

find_lowest((int[]){score[0],score[1],score[2],score[3],score[4],score[5]});

做这样的事情来让你的函数更灵活一点可能是一个更好的主意,但你需要保持正在使用的数组的长度(但我想你已经通过确保它们是6 个或更多元素)。

double find_highest(double a[], size_t len)
{
   double temp = 0;
   for(size_t i=0;i<len;i++)
   {
       if(a[i]>temp)
       temp=a[i];
   }
   return temp;
}
于 2013-11-10T06:55:01.853 回答
0

问题是表达式find_lowest(score[5])score[5]是 double 类型,而在函数的参数列表中您已指定double[]double*因此错误。

因此,进行以下更正:

cout << "The lowest of the results = " << find_lowest(score);
cout << "The highest of the results = " << find_highest(score);

此外,您的函数中存在一些错误find_highest(),如果输入数组具有所有负数,如 a[]={-1.0,-2.0,-3.5,-5.0,-1.3} 那么您的函数将return 0是不正确的,正确的实施将是:

double find_highest(double a[])
{
 double temp = a[0];
 for(int i=0;i<5;i++)
 {
  if(a[i]>temp)
     temp=a[i];
 }
 return temp;
}

同样的find_lowest()功能应该是:

double find_lowest(double a[])
{
 double temp = a[0];
 for(int i=0;i<5;i++)
 {
  if(a[i]<temp)
     temp=a[i];
 }
 return temp;
}
于 2013-11-10T06:57:43.720 回答