【问题标题】:Add a Data value to the end of an array in c++在 C++ 中将数据值添加到数组的末尾
【发布时间】:2020-06-11 03:26:05
【问题描述】:

我需要一些帮助。 我正在浏览一些工资单数据。 我运行了一个读取 .txt 文件的函数,然后将其存储在数组中。我现在正在尝试编写一个函数,允许您添加到这些数组中(它们是 32 个数组,但文件中只有 20 个元素)所以它需要遍历数组,确保它们不会超出范围,然后将其他数据类型添加到数组中。这就是我的样子。没有错误,但是当我运行它时,它什么也不做:

string AddPayrollData(array<double, kMaxSize> &hours, 
array<char, kMaxSize> &pay_type,
array<double, kMaxSize> &pay_rate, 
array<string, kMaxSize> &names,
double hours_worked, char pay_t, double pay_r, string full_name,
int &size )
{

    int i = 0;
    while (size < kMaxSize && i < size)
    {
        if (hours[i] > 168)
        {
            cout << "Hours is out of range, set to 0" << endl;
            hours[i] = 0;
        }
        if (pay_type[i] != 'h' || 's')
        {
            cout << "Incorrect pay type, set to s " << endl;
            pay_type[i] = 's';
        }
        if (pay_rate[i] < 7.25)
        {
            cout << "Pay is less than minimum wage, set to 7.25 " << endl;
            pay_rate[i] = 7.25;
        }
        if (names[i].find(","))
        {}
        else
        {
            cout << "Name Is not in last, first format" << endl;
            names[size] = "unknown";
        }
        i++; 
    }
        if(size >= kMaxSize)
        {
            cout << "Arrays are full, no payroll data added" << endl;
        }
        else
        {
            hours_worked = hours[size];
            pay_t = pay_type[size];
            pay_r = pay_rate[size];
            full_name = names[size];
            size++;
        }
    return "";
}

感谢您的帮助!

【问题讨论】:

  • 您没有显示AddPayrollData() 的调用方式。请提供minimal reproducible example。附带说明一下,if (pay_type[i] != 'h' || 's')if (names[i].find(",")) 语句并没有按照您的想法执行。
  • 我想知道,为什么不使用 std::vector
  • message1 = AddPayrollData(hours, pay_type, pay_rate, names, 169, 's', 17.25, "Kerr, Shawn", size);
  • @aaronleejackson if (pay_type[i] != 'h' || 's') 应该是 if (pay_type[i] != 'h' &amp;&amp; pay_type[i] != 's')if (names[i].find(",")) 应该是 if (names[i].find(",") != string::npos)
  • @aaronleejackson 必须重复之前所说的,你为什么不使用vector

标签: c++ arrays loops if-statement


【解决方案1】:

这里似乎有一些问题。有些已经在上面的 cmets 中处理过了。所以我会提到其他的。

最重要的问题是函数的目的被混淆了。它既验证现有数据,又添加(但不验证)新数据。这两件事都没有错,但它们应该是单独的功能。或者也许这个函数应该添加和验证新数据,但不理会现有数据。

在验证部分,已经提到了一些错误,加上names[size] = "unknown";应该是names[i] = "unknown";

在添加部分的问题是分配执行的方式错误

hours_worked = hours[size];
pay_t = pay_type[size];
pay_r = pay_rate[size];
full_name = names[size];

当然应该

hours[size] = hours_worked;
pay_type[size] = pay_t;
pay_rate[size] = pay_r;
names[size] = full_name;

最后由于某种奇怪的原因,函数返回了一个字符串。只需将其设为 void 函数即可。

【讨论】:

  • 太棒了。这是有道理的。谢谢!我只是想找出添加新数据并验证它的最佳方法?这就是这个功能的目的。我写的另一个函数已经验证了旧数据。听起来很愚蠢,我只是想找到将它添加到数组中的最佳方法。谢谢。
  • @aaronleejackson 如果您只想验证新数据,则将循环放在函数的第一部分并检查变量hours_workedpay_tpay_rfull_name
猜你喜欢
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 2013-08-18
  • 1970-01-01
  • 2013-07-15
  • 2011-06-16
  • 1970-01-01
相关资源
最近更新 更多