首页 > 解决方案 > C++ 打印向量并替换缺失的元素

问题描述

我有一个随机整数向量,已排序。元素是 1 到 10 之间的一个,11 到 20 之间的一个,21 到 30 之间的一个等等,如果缺少数字,我想打印一个 *。任何想法如何做到这一点?

std::vector<int> v = { 3, 14, 35, 47, 71 }; //vector size is 5 and numbers can go up to 99
int i = 0;
for (int j = 1; j < 11; ++j)  
{
    if (i<5  &&  (v.at(i) < j*10))
    {
        std::cout << ' ' << v.at(i) ;
        i++;
    }
    else
    {
        std::cout << "  *  " ;
    }

}

输出应该是:3 14 * 35 47 * * 71

我正在考虑通过一个循环检查每个元素是否是一组特定数字的一部分,例如 v[0]<11 print the element else print '*'

稍后编辑:知道了

标签: c++printf

解决方案


我对您的程序进行了一些更改,现在它可以正常工作了,所以您想要:

int main() {

    vector<int> v = { 3, 14, 35, 47, 71 }; //vector size is 5 and numbers can go up to 99
    int i = 0;
    for (int j = 10 ; j <= 100 && i < 5; j += 10)
    {
        if (j == 100)
            j--;

        if (v.at(i) <= j && v.at(i) >= (j - 10))
        {
            std::cout << ' ' << v.at(i);
            i++;
        }
        else
        {
            std::cout << "  *  ";
        }

    }

    return 0;
}

推荐阅读