ERROR“无法将'浮动'转换为'浮动......'......”

时间:2012-03-20 08:32:01

标签: c++ function compiler-errors floating-point

这里可能还有其他一些格式错误,我需要修复等等,但我需要帮助的是如何处理以下内容:

  

Lab8pt1.cpp:在函数'float Salary(float,float)'中:
  Lab8pt1.cpp:48:错误:赋值函数'float Salary(float,float)'   Lab8pt1.cpp:48:错误:无法在赋值中将'float'转换为'float()(float,float)'   Lab8pt1.cpp:50:错误:赋值函数'float Salary(float,float)'   Lab8pt1.cpp:50:错误:在分配中无法将'double'转换为'float()(float,float)'   Lab8pt1.cpp:51:错误:无法将'float(*)(float,float)'转换为'float'作为回报​​

我知道这是指我的薪水功能,但我不确定浮动的问题是什么。这应该是一个简单的实验室作业,教我们如何使用函数(我们只需要为函数编写代码,其余部分给我们)。

请帮忙!提前致谢!

#include <iostream>
#include <iomanip>
#include <string>

using namespace std ;

void Header(void) ;            
float Salary(float Hours, float Pay_Rate);  
void Print_it(float Hours,float Pay_Rate,float Sal, float Tax_Rate, string Name);  
void Read(float &hour, float &Pay_R,string &name) ;
bool Verify(float Hours, float Pay_Rate);  

int main ( void )
{
    float   Pay_Rate, Hours, Sal, Tax;
    const float  Tax_Rate= (float)0.09 ;
    string name;

    Header();
    for(int i = 0 ; i < 3 ; i++){
         Read(Hours,Pay_Rate,name);
         Sal = Salary(Hours,Pay_Rate);
         Print_it(Hours,Pay_Rate,Sal, Tax_Rate,name);    
    }
    cout<<"\n\n\n**********\t End of report \t*****\n\n\n\n";
    return 0 ;
}

void Header( void )
{
     string name;
     cout << "Welcome, " << name << ", to the Salary Calculator: a program that will calculate your salary.";
     return;
} 

float Salary(float Hours, float Pay_Rate)
{
     if( Hours <= 40 )
         Salary = Hours * Pay_Rate;
     else if( Hours > 40)
         Salary = Hours * (Pay_Rate * 1.5);
     return(Salary);
}

void Print_it(float Hours,float Pay_Rate,float Sal, float Tax_Rate, string Name)
{
     cout << fixed << setprecision(2);
     cout << "Name: " << left << setw(15) << Name << endl;
     cout << "Hours worked: " << left << setw(15) << Hours << endl;
     cout << "Pay rate: " << left << setw(15) << Pay_Rate << endl;
     cout << "Tax rate: " << left << setw(15) << Tax_Rate << endl;
     cout << "Salary: " << left << setw(15) << Sal << endl;
     return;
}

void Read(float &hour, float &Pay_R,string &name) 
{
     cout << "Please enter your name: ";
     getline(cin, name);
     cout << "Please enter number of hours worked: ";
     cin >> hour;
     cout << "Please enter your pay rate: ";
     cin >> Pay_R;
     return;
}

bool Verify(float Hours, float Pay_Rate)
{
     if( Hours < 0 || Hours > 60 || Pay_Rate < 0 || Pay_Rate > 500)
         return false;
     else
         return true;
}  

2 个答案:

答案 0 :(得分:5)

Salary = Hours * Pay_Rate;

Salary是函数名称。您无法为其指定浮点值。您需要声明一个float变量并返回该变量。

float sal;

sal = Hours * Pay_Rate;

return sal;

实际上你不需要这个变量。您可以在if-else块中直接返回。

if( Hours <= 40 )
    return Hours * Pay_Rate;

请注意,方法和变量名称应以小写字母开头,类名称应以大写字母开头。这是广泛使用的惯例。

答案 1 :(得分:1)

它正在尝试返回的功能。

float Salary(float Hours, float Pay_Rate)
{
     if( Hours <= 40 )
         Salary = Hours * Pay_Rate;
     else if( Hours > 40)
         Salary = Hours * (Pay_Rate * 1.5);
     return(Salary);
}

此功能

中没有定义变量薪水

更正后的代码是:

float Salary(float Hours, float Pay_Rate)
    {
         float salary;
         if( Hours <= 40 )
             salary = Hours * Pay_Rate;
         else if( Hours > 40)
             salary = Hours * (Pay_Rate * 1.5);
         return(salary);
    }