我是C&汇编程序员。但C ++是如此愚蠢。我无法理解我在这里做错了什么。有人可以向我解释为什么我会收到此错误吗?这是我的代码: GNU nano2.2.6Файл:assignment4.cpp
#include <cstdlib>
#include <iostream>
#define SIZE 10
int counter = 0;
const double TAX = 1.13;
float sumall(double arr[]);
int main (int argc, char **argv)
{ double array[SIZE] = {0,0,0
,0,0,0
,0,0,0
,0};
while (counter < (SIZE-1))
{
if (array[counter-1] == -99)
break;
else continue;
std::cout << "Enter any number [1 WORD long]: ";
std::cin >> array[counter];
++counter;
}
std::cout << "The total price is: $" << sumall(array[SIZE]);
return EXIT_SUCCESS;
}
float sumall(double arr[])
{
float total=0;
for(int i=0;i<SIZE;++i)
{
total+=arr[i];
}
total*=TAX;
return (total*TAX);
}
另外,如何使用模板修复此错误(我在C ++中听说过这可能),谢谢!
答案 0 :(得分:3)
我认为应该是这样的:
std::cout << "The total price is: $" << sumall(array);
总共应该是双倍
double sumall(double arr[])
{
double total=0;
for(int i=0;i<SIZE;++i)
{
total+=arr[i];
}
total*=TAX;
return (total*TAX);
}
答案 1 :(得分:1)
您有int counter = 0;
和if (array[counter-1] == -99)
在循环的第一次迭代中,您将访问索引0 - 1 = -1
。
在你的sumall
函数中,你声明它返回浮点数,但由于你要求加倍,所以最终值将是双倍
最好使用const int SIZE = 0
,比使用#define
并且在函数调用sumall
,sumall(array[SIZE])
时,无需传递数组大小。
就像这样称呼sumall(array)