0

我已经在这个程序上工作了一段时间,但它拒绝在最后一点上合作。该程序的重​​点是将数据文件筛选为三个数组,对数组进行排序,然后将它们打印到表格中。我遇到的问题似乎与桌子有关。该程序分为四个函数,当我尝试调试时,它不会在函数中显示productName数组。

故障代码段如下所示:

void printReport (string productName[], int numberinStock[], float price[], int number_of_products)
{
    float totalPrice; 

    cout << setw(18) << " " << "Friendly Grocer Store Inventory" << setw(17) << " " << endl; 
    cout << setw(18) << "Inventory Item" << setw(16) << "Number in Stock" << setw(16) << "Unit Price" << setw(16) << "Total Sales" << endl; 
    for (int count=0; count <number_of_products-1; count++)
    {
        cout << setw(18) << productName[count] << setw(16) << numberinStock[count] << setw(16) << std::setprecision(2) << price[count] << setw(16) << std::fixed << std::setprecision(2) << price[count]*numberinStock[count] << endl; 
    }
    cout << "Total Price:  " << totalPrice; 
}

它将打印其他所有内容,但不会打印productName. for 循环之外的一些调试语句cout << productName[1]会打印出正确的productName,但在实际报告中它是完全空白的。经过一些调试后,似乎productName在 for 循环中打印之后的每个项目都会覆盖产品名称。

例如刚离开cout << setw(18) << productName[count] << setw(16) << numberinStock[count] << endl;

会产生

“3s”
“10h”
“2a”

产品名称有芒果、三明治和披萨。

我不知所措。我哪里搞砸了?

4

1 回答 1

0

您可能搞砸了将数据传递到函数中。如果您在函数中设置测试数组,它应该可以正确打印。

在 C++ 中传递数组,请使用数组名。例如

int main ()
{
  string productName[] = {"mango"}; 
  ...
  printReport(productName, numofProduct);
  return 0;
}
于 2013-05-03T02:49:53.627 回答