当我告诉它只在forloop中做一次时,有人可以帮我找出这会迭代3次吗?我选择我的mtype 1,当我去显示那些信息时(这个功能是设计用的)它循环3次而不是1次。
编辑:我知道它的迭代次数超过它应该的原因是因为每个if语句底部的cout语句实际上并没有去那里,我只是用它来找到问题所在。for (int itemno = 0; itemno < numItems; itemno++)
{
if (mtype == *(type + itemno) || mtype == -1)
{
if (mtype == 2)
{
*(price + itemno) = calculatePrice(*(cost + itemno), *(hours + itemno));
totalCost = totalCost + *(cost + itemno);
totalHour = totalHour + *(hours + itemno);
totalPrice = totalPrice + *(price + itemno);
cout << setw(13) << left << canType << setw(13) << right << *(cost + itemno) << setw(16) << setprecision(2) << fixed << hours[itemno] << setw(16) << price[itemno] << endl << endl;
}
}
else if (mtype == *(type + itemno) || mtype == -1)
{
if (mtype == 3)
{
*(price + itemno) = calculatePrice(*(cost + itemno), *(hours + itemno));
totalCost = totalCost + *(cost + itemno);
totalHour = totalHour + *(hours + itemno);
totalPrice = totalPrice + *(price + itemno);
cout << setw(13) << right << *(cost + itemno) << setw(16) << setprecision(2) << fixed << hours[itemno] << setw(16) << price[itemno] << endl << endl;
}
}
else if (mtype == *(type + itemno) || mtype == -1)
{
if (mtype == 4)
{
*(price + itemno) = calculatePrice(*(cost + itemno), *(hours + itemno));
totalCost = totalCost + *(cost + itemno);
totalHour = totalHour + *(hours + itemno);
totalPrice = totalPrice + *(price + itemno);
cout << setw(13) << right << *(cost + itemno) << setw(16) << setprecision(2) << fixed << hours[itemno] << setw(16) << price[itemno] << endl << endl;
}
}
else if (mtype == *(type + itemno) || mtype == -1)
{
if (mtype == 5)
{
*(price + itemno) = calculatePrice(*(cost + itemno), *(hours + itemno));
totalCost = totalCost + *(cost + itemno);
totalHour = totalHour + *(hours + itemno);
totalPrice = totalPrice + *(price + itemno);
cout << setw(13) << right << *(cost + itemno) << setw(16) << setprecision(2) << fixed << hours[itemno] << setw(16) << price[itemno] << endl << endl;
}
}
cout << setw(13) << right << *(cost + itemno) << setw(16) << setprecision(2) << fixed << hours[itemno] << setw(16) << price[itemno] << endl << endl;
}
cout << endl << setw(9) << left << "TOTALS: " << setw(5) << right << "$" << setw(12) << totalCost<< setw(17) << totalHour << setw(17) << "$" << setw(5) << totalPrice << endl;
cout << endl << horizontalLine << endl << endl;
}
答案 0 :(得分:0)
看看所有重复。试试这个:
if (mtype >= 2 && mtype <= 5) {
for (int itemno = 0; itemno < numItems; itemno++) {
if (mtype == type[itemno]) {
price[itemno] = calculatePrice(cost[itemno], hours[itemno]);
totalCost += cost[itemno];
totalHour += hours[itemno];
totalPrice += price[itemno];
if (mtype == 2) cout << setw(13) << left << canType;
cout << setw(13) << right << cost[itemno]
<< setw(16) << setprecision(2) << fixed << hours[itemno]
<< setw(16) << price[itemno] << "\n\n";
}
}
}
cout << "\n" << setw(9) << left << "TOTALS: "
<< setw(5) << right << "$" << setw(12) << totalCost
<< setw(17) << totalHour
<< setw(17) << "$" << setw(5) << totalPrice << "\n\n";
cout << horizontalLine << "\n\n";
cout << flush;