使用数组计算员工工资
本文关键字:计算 数组 | 更新日期: 2023-09-27 18:34:51
我有两个数组payArray
,hoursArray
,其中数组是通过从csv
文件中读入来初始化的。
目标是calculate base pay
这将是payArray
倍hoursArray
。问题是 hoursArray 包含超过 40 的小时数。任何超过 40 小时的小时都会随着时间的推移,每小时多 1.5 小时。所以我必须使用这两个数组计算基本工资、over time pay
和gross pay
。
目前我有以下功能:
注意 * 员工数 = 20 和 OT_RATE = 1.5
static double BasePay()
{
int i;
double bpay;
for (i = 1; i <= numOfEmployees; i++)
{
if (hoursArray[i] > 40)
hoursArray[i] * OT_RATE;
else if
bpay = payArray[i] * hoursArray[i];
}
return bpay;
}
我已经尝试了几种不同的方法来使用此函数来计算这些,但能够这样做。
更新**
这是文件输出和函数:
for (i = 1; i <= numOfEmployees; i++)
fileOut.WriteLine("{0,4:D4} {1,-25} {2,3} {3,7:f} {4,6:f} {5,6:f}",
idArray[i], nameArray[i], deptArray[i], payArray[i], hoursArray[i], BasePay(id));
static double BasePay(int i)
{
int id = 0;
double bpay = 0.0, OT_RATE = 1.5;
if (id < hoursArray.Length) //guard on array index
{
if (hoursArray[i] > 40)
bpay += (hoursArray[i] - 40) * payArray[i] * OT_RATE + (40 * payArray[i]);
else
bpay += payArray[i] * hoursArray[i];
}
return bpay;
}
添加id = 0;
的引用后,公式似乎有效,但我得到以下输出:
薪酬计算
Toni(化名(的基本工资应该是 880.00,这将是 22.00 乘以 40,那么从技术上讲,随着时间的推移将是 132.00,因为 4 小时以 1.5 倍的工资率是 OT 计算。
基本工资将按以下方式计算:
for (...)
{
bpay[i] = payArray[i] * (hoursArray[i] > 40 ? 40 : hoursArray[i]);
}
这是您的函数应该返回的内容,因为它被命名为"BasePay"。在这个特定的功能中,你不必担心加班。
如果要将函数重命名为类似Pay()
,则可以执行以下操作:
for (...)
{
pay[i] = payArray[i] * (hoursArray[i] > 40 ? 40 : hoursArray[i]);
if (hoursArray[i] > 40)
pay[i] += payArray[i] * OT_RATE * (hoursArray[i] - 40);
}
我不确定你打算只获得最后一名员工的基本工资或总基本工资。另外(我假设(您只需要在 40 小时后OT_RATE。
我更新了代码,假设您需要所有员工的基本工资,并且 OT 仅适用于超额工作(40 小时(。
static double BasePay()
{
int i;
double bpay =0.0, OT_RATE = 1.5;
for (i = 1; i <= numOfEmployees; i++)
{
if (hoursArray[i] > 40)
bpay += (hoursArray[i]-40) * payArray[i] * OT_RATE + (40* payArray[i]);
else
bpay += payArray[i] * hoursArray[i];
} return bpay;
}
更新:
或者,您也可以在此处删除循环,以通过传递 ID 来获取单个员工的基本工资。
static double BasePay(int i)
{
double bpay =0.0, OT_RATE = 1.5;
if(id < hoursArray.Length) //guard on array index
{
if (hoursArray[i] > 40)
bpay += (hoursArray[i]-40) * payArray[i] * OT_RATE + (40* payArray[i]);
else
bpay += payArray[i] * hoursArray[i];
}
return bpay;
}