使用数组计算员工工资

本文关键字:计算 数组 | 更新日期: 2023-09-27 18:34:51

我有两个数组payArrayhoursArray,其中数组是通过从csv文件中读入来初始化的。

目标是calculate base pay这将是payArrayhoursArray。问题是 hoursArray 包含超过 40 的小时数。任何超过 40 小时的小时都会随着时间的推移,每小时多 1.5 小时。所以我必须使用这两个数组计算基本工资、over time paygross 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;    
}