2012-03-20 4 views
0

Возможно, есть и другие небольшие ошибки форматирования, которые мне нужно исправить, и т. Д., Но мне нужна помощь в том, что делать со следующим:ERROR "не может конвертировать 'float' в 'float ...' ..."

Lab8pt1.cpp: In function 'float Salary(float, float)':
Lab8pt1.cpp:48: error: assignment of function 'float Salary(float, float)'
Lab8pt1.cpp:48: error: cannot convert 'float' to 'float()(float, float)' in assignment
Lab8pt1.cpp:50: error: assignment of function 'float Salary(float, float)'
Lab8pt1.cpp:50: error: cannot convert 'double' to 'float()(float, float)' in assignment
Lab8pt1.cpp:51: error: cannot convert 'float (*)(float, float)' to 'float' in return

Я знаю, что имеет в виду моей функции заработной платы, но я не уверен, что проблема с моим поплавка. Предполагается, что это простое лабораторное задание, которое учит нас использованию функций (нам нужно написать код для функций, остальное нам было дано).

Помогите, пожалуйста! Заранее спасибо!

#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; 
} 
+4

Посмотрите более внимательно на 'функции Salary'. Вы пытаетесь присвоить значение для возврата к фактической функции. –

+0

Вы пришли из 'Pascal' в' C++ '? – Lol4t0

ответ

5
Salary = Hours * Pay_Rate; 

Salary это имя функции. Вы не можете присвоить ему значение float. Вам нужно объявить переменную float и вернуть эту переменную.

float sal; 

sal = Hours * Pay_Rate; 

return sal; 

На самом деле вам не нужна эта переменная. Вы можете напрямую вернуться в блок if-else.

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

Обратите внимание, что имена методов и переменных должны начинаться с буквы нижнего регистра, имя класса должно начинаться с верхнего регистра. Это широко используется конвенция.

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); 
    } 
Смежные вопросы