Есть ли способ, чтобы я мог отмечать элемент в массиве, как вкл, так и выключать, или назад и вперед между конкретным целым числом, как 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