我已经在这个项目上工作了一段时间,但它拒绝在最后这一段时间内合作。程序的重点是将数据文件筛分为三个数组,对数组进行排序,然后将它们打印到表中。我遇到的问题似乎与表格有关。该程序分为四个函数,当我尝试调试时,它不会在函数中显示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
。
像cout << productName[1]
这样的for循环之外的一些调试语句将打印出正确的productName
,但在实际报告中它是完全空白的。
经过一些调试之后,似乎在每个项目之后在for循环中打印productName
后,会覆盖产品名称。
例如离开cout << setw(18) << productName[count] << setw(16) << numberinStock[count] << endl;
将产生
“3s”
“10h”
“2a”
产品名称有芒果,三明治和披萨。
我很茫然。我在哪里搞砸了?
答案 0 :(得分:0)
您可能已经搞砸了将数据传递到函数中。如果在函数中设置测试数组,则应正确打印。
要pass arrays in C++使用arrayname。 例如
int main ()
{
string productName[] = {"mango"};
...
printReport(productName, numofProduct);
return 0;
}