ОШИБКА "невозможно преобразовать 'float' в 'float ...'..." - PullRequest
0 голосов
/ 20 марта 2012

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

Lab8pt1.cpp: Inфункция 'float Salary (float, float)':
Lab8pt1.cpp: 48: ошибка: назначение функции 'float Salary (float, float)'
Lab8pt1.cpp: 48: ошибка: невозможно преобразовать 'float'to 'float () (float, float)' в присваивании
Lab8pt1.cpp: 50: ошибка: назначение функции 'float Salary (float, float)'
Lab8pt1.cpp: 50: ошибка: невозможно преобразовать 'double 'to' 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 ]

5 голосов
/ 20 марта 2012
Salary = Hours * Pay_Rate;

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

float sal;

sal = Hours * Pay_Rate;

return sal;

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

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

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

1 голос
/ 20 марта 2012

это функция, которую вы пытаетесь вернуть.

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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...