我不明白这些编译错误

时间:2011-03-23 22:22:32

标签: c++

我无法编译,这个程序给了我错误。我已经花了3天时间。

C:\南澳\ COS1511 \ TEST.CPP
[警告]在函数`float calcAllowedPerChild(float)'中:

错误C:\ unisa \ COS1511 \ test.cpp:26
类型float ()(float)const float到二进制operator<

的无效操作数
#include <iostream>
using namespace std;

const float maxPerUnit = 20000.00;
//minPerChild include a standard gift consisting of a bath towel and facecloft
const float minPerChild = 100.00;
const float maxPerChild = 180.00;

//Depending on the amount the child may also get one or more of the fallowing:
const float TOOTHBRUSH = 29.95;
const float HIGHLIGHTERS = 25.99;
const float CRAYONS = 17.95;
const float NOTEBOOK = 12.95;
const float PEN = 9.99;

//You must add the function calcAllowebPerchild () here

float calcAllowedPerChild ( float nrChildren)

{

float allowedPerChild = maxPerUnit / nrChildren;

if ( allowedPerChild > maxPerChild || calcAllowedPerChild < minPerChild)

    return maxPerChild;
    else
    return minPerChild;

} 

int main ()
{

    float amtGift; //Allowed amount per child
    float amtSpendPerChild = 0.00; //actual amount spend per child
    float totalSpend = 0.00; //total spend for one orphanage
    float totalAll = 0.00; //total spend for all 4 orphanages
    int nrChildren;        //number of chldren per orphanage

    cout << "Enter the number of children: " << endl;
    cin >> nrChildren;
    amtGift = calcAllowedPerChild(nrChildren);
    cout.setf(ios::fixed);
    cout.precision(2);
    cout << endl << " Allowable amount per child    :R" << amtGift;
    cout << endl << endl;

    return 0;
}

9 个答案:

答案 0 :(得分:5)

你有一个;在calcAllowedPerChild函数的末尾。

功能应如下所示:

void foo() {
    ... code ...
}

或:

void foo()
{
    ... code ...
}

取决于您的编码风格。

修改 - 您还需要更正拼写(maxPerChald)并声明calcAllowedPerChild

float calcAllowedPerChild = maxPerUnit / nrChildren;

以及更改calcAllowedPerChild功能或calcAllowedPerChild变量的名称。你不能让他们都有相同的名字。

答案 1 :(得分:1)

此功能结束时不应该有;

float calcAllowedPerChild ( float nrChildren);

修复此问题,看看会发生什么。

答案 2 :(得分:1)

我建议检查你的分号 - 确保函数声明看起来不像原型。

答案 3 :(得分:1)

float calcAllowedPerChild ( float nrChildren);
                                          // ^ : Error - reomove it.

函数原型以;但不是函数定义结束。另请查看if语句条件 -

if ( calcAllowedPerChild > maxPerChild || calcAllowedPerChild < minPerChild)

既然是作业,我会给你一个下一个错误的提示。

提示:每个语句都应以;结尾。现在检查calcAllowerPerChild功能。

if ( allowedPerChild > maxPerChild || calcAllowedPerChild < minPerChild)
                                     //^^^^^^^^^^^^^^^^^ Error: Probably you
                                     // meant allowedPerChild. Change it.

答案 4 :(得分:1)

calcAllowedPerChild存在许多问题 - 应该是:

float calcAllowedPerChild (float nrChildren)
{    
    float allowedPerChild = maxPerUnit / nrChildren;

    if (allowedPerChild > maxPerChild || allowedPerChild < minPerChild)
        return maxPerChild;
    else
        return minPerChild;
}

你这里也有一个错字:

const float maxPerChald = 180.00;

它应该是:

const float maxPerChild = 180.00;

答案 5 :(得分:0)

这一行:

float calcAllowedPerChild ( float nrChildren);

最后不应该有分号。它应该是:

float calcAllowedPerChild ( float nrChildren)

答案 6 :(得分:0)

嗯,是的,你有额外的';'在你的函数定义中:

float calcAllowedPerChild ( float nrChildren);

只需在那行末尾删除分号。这就是编译器试图告诉你什么时候它说你在那行上有一个额外的分号。

答案 7 :(得分:0)

删除;末尾的分号float calcAllowedPerChild ( float nrChildren); 函数定义不以分号结尾。

答案 8 :(得分:0)

你的代码中有这个错字吗?

const float maxPerChald = 180.00;

删除此行后面的分号:

float calcAllowedPerChild ( float nrChildren);