不能将参数'1'的'double'转换为'double *'为'float sumall(double arr [])

时间:2013-11-17 07:12:57

标签: c++ arrays function

我是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 ++中听说过这可能),谢谢!

2 个答案:

答案 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

更安全

并且在函数调用sumallsumall(array[SIZE])时,无需传递数组大小。 就像这样称呼sumall(array)