标记元素C 阵列带嵌套循环

Flagging Elements C++ array w/ Nested loop

本文关键字:嵌套循环 阵列 元素      更新时间:2023-10-16

是否有一种方法可以使我可以在特定整数(如嵌套环内部的1和2)之间来形容一个元素中的元素,或者在特定的整数之间来回或来回。我很困扰我的作业。基本上,我有一个数组中有150个元素,一个邮递员正在通过2个倍数的打开盒子,然后倍数为3,如果他击中了一个已经打开的盒子,该盒子已经打开了2个,他将关闭它,然后他走了通过150个邮箱,倍数为4,依此类推,直到150,如果它已经打开,他将关闭一个盒子,并打开关闭的盒子,直到外循环命中150,所有数字都已使用

我尝试了布尔和if语句,只有一堆额外的计数器变量,而idk如何有效地执行此操作

我曾经工作过一次,但是代码太草率了,我只是抓挠它,因为它可能是错误的答案

一定要在我的课程中作弊,但我已经多次阅读了本章,并且已经进行了许多互联网搜索,但我迷路了。我不是在要求代码,我只想了解什么是数组中标记或标记元素的最佳方法

使用模量运算符: %检查其余部分。

这是一个执行您描述的示例。

要切换布尔值,只需使用"非"布尔运算符。

#include <vector>
#include <iostream>
class boxes {
private:
    std::vector<bool>open;
    // visit boxes for a given step
    void visit (size_t step)
    {
        for (size_t i = 0 ; i < open.size() ; i+= step)
        {
            open[i] = ! open[i]; // toggle open state
        }
    }
public:
    // constructor
    boxes (size_t size)
    {
        // all boxes initially closed
        open.resize(size, false);
       // visit boxes with all values
       for (size_t i = 2 ; i != size ; i++)
       {
           visit (i);
       }
    }
    // trace function
    void trace (void)
    {
        for (int i = 0 ; i != open.size() ; i++)
        {
            std::cout << "box " << i << (open[i] ? " open" : " closed") << std::endl;
        }
    }
};
int main (void)
{
    boxes sample (10);
    sample.trace();
    return 0;
}

输出:

box 0 closed
box 1 closed
box 2 open
box 3 open
box 4 closed
box 5 open
box 6 open
box 7 open
box 8 open
box 9 closed