在“pages”c ++中打印出一个Vector

时间:2018-01-20 20:48:22

标签: c++

我有一个程序,允许用户将人员添加到文件中,并在控制台上打印出来。

这是一个可以处理的功能,一次打印出20个人。问题是,它只与第一个“页面”一起使用,然后在下一页打印出所有其他名称。这可能是因为当它曾经达到IF条件时,它永远不会脱离它。

如何使函数重新循环并重新检查if条件?

void showList(vector<Person> &persons)
{
    showColumns();


    for (auto i = 0; i<persons.size(); ++i)
    {
        cout << left << setw(5) << i+1;
        cout << setw(15) << persons[i].nSignature;
        cout << setw(15) << persons[i].fName + " " + persons[i].lName;
        cout << right << setw(3) << fixed << setprecision(2) << persons[i].length << endl;
        if (i > 0 && (i - 1 % 20 == 0)){
            cout << "Press any key to show the next 20 entries..";
            cin.get();
            rensa();
            showColumns();
        }
    }
    cout << endl;

}

funktion rensa();清除屏幕。 function showColumns();显示列的名称。 (签名,姓名,长度等)

1 个答案:

答案 0 :(得分:0)

您必须将条件更改为

if (i != 0 && (i + 1) % 20 == 0)

因为运营商%的优先级高于-+

你需要i + 1,所以如果你只是打印i = 19,你将有(19 +1)%20 == 0,在第二个20之后 - i = 39和(39 + 1)% 20 == 0