gpt4 book ai didi

c++ - 程序没有提供所需的输出

转载 作者:行者123 更新时间:2023-11-28 00:09:46 24 4
gpt4 key购买 nike

我有一项任务,我应该执行以下操作。

  1. 编写一个程序,询问员工的薪水和服务年限。
  2. 如果员工的服务年限超过 10 年。他们得到 10% 的加薪。在 5 到 10 年之间,加薪幅度为 5%。其他人将获得 2% 的加薪。
  3. 员工的年度奖金。每 2 年服务 500 美元。
  4. 以清晰专业的方式显示计算的信息。

我写了下面的代码作为分配问题的解决方案;但是我总是得到错误的输出。我试图调试程序找出问题所在,我看了书,看了看网络,但我找不到问题所在。

   #include <iostream>
#include <iomanip>


using std::cout;
using std::cin;
using std::setw;
using std::setprecision;
using std::fixed;
using std::right;
using std::left;
using std::setfill;

//function prototypes
void GetInput(double & salary, int years_service);
void CalcRaise(double & salary, int years_service);
int CalcBonus(int years_service);
void PrintCalculations(int years_service, double salary, int bonus);

int main()
{
//variable diclerations
double salary = 0.00;
int years_service = 0;
int bonus = 0;

//function calls
GetInput(salary,years_service);
CalcRaise(salary,years_service);
CalcBonus(years_service);
PrintCalculations(years_service,salary,bonus);

cout << "\n";
return 0;
}

//prompts the user for input
void GetInput(double &salary, int years_service)
{
cout << "Enter Salary: ";
cin >> salary;
cout << "\nEnter years of service: ";
cin >> years_service;
}

//calculates the raise
void CalcRaise(double & salary, int years_service)
{
double raise = 0.00;


if (years_service > 10)
{
raise = salary * (10 / 100);
salary = salary + raise;
}
else if (years_service >= 5 && years_service <= 10)
{
raise = salary * (5 / 100);
salary = salary + raise;
}
else
{
raise = salary * (2 / 100);
salary = salary + raise;
}
}

//calculates the bonus
int CalcBonus(int years_service)
{
int bonus = 0;

bonus = (years_service / 2) * 500;

return bonus;
}

//outputs the results of the calculations
void PrintCalculations(int years_service, double salary, int bonus)
{
cout << setw(18) << left << "Years of Service" << setw(16) << left << " Salary after raise"
<< setw(8) << left << " Bonus\n";
cout << setw(15) << setfill(' ') << right<< years_service
<< setw(18) << setfill(' ') << right << salary << setw(8) << right << setfill(' ') << bonus;
}

=========================

The Output:

Enter Salary: 4000

Enter years of service: 7
Years of Service Salary after raise Bonus
0 4000 0

最佳答案

错误在这里:

void GetInput(double  &salary, int years_service)

您将 years_service 作为值传递。这将简单地复制您之前拥有的 0。然后你永远不会读它,而是写给它。原来的值当然不会被覆盖。

您应该改为通过引用传递。

void GetInput(double  &salary, int& years_service)

关于c++ - 程序没有提供所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33773199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com