Оператор break может использоваться для выхода из циклов. Пример из cppreference:
for (int j = 0; j < 2; j++) {
for (int k = 0; k < 5; k++) { //only this loop is affected by break
if (k == 2) break;
std::cout << j << k << " ";
}
}
Как следует из комментария, break
разрушает только самый внутренний l oop.
В вашем коде вы всегда выходите из l oop на самой первой итерации, поэтому вам не нужен l oop на первом месте. Это будет иметь тот же вывод, что и ваш код:
int main() {
int i, dim, v[100];
cin >> dim;
for(i=0; i < dim; i++)
cin >> v[i];
if(v[0] == 0 || v[0] == 1) {
cout << "YES";
} else {
cout << "NO";
}
}
После прочтения вопроса снова ...
Я сделал простой l oop, который узнает, является ли массив имеет элементы со значениями 0 и 1
Если вы выйдете из l oop после проверки первого элемента, то вы проверите только первый элемент. Если вы хотите увидеть, содержит ли массив только 1 или 0 или он содержит хотя бы один элемент, который равен 0 или 1 (не на 100% ясно, какой элемент вы хотите), то вам скорее нужно это:
bool only_zero_or_one = true;
bool one_zero_or_one = false;
for (int i = 0; i < dim; ++i) {
zero_or_one = ( v[i] == 0 | v[i] == 1);
only_zero_or_one = zero_or_one && only_zero_or_one;
one_zero_or_one = zero_or_one || one_zero_or_one;
}
Только для one_zero_or_one
вы можете разорвать l oop один раз zero_or_one == true
.
Более того, вам лучше использовать std::vector
. В вашем коде, если пользователь вводит dim
, который больше 100
, вы пишете за пределами v
. Этого легко избежать:
size_t dim;
std::cin >> dim;
// construct vector with dim elements
std::vector v(dim);
// read elements
for (size_t i=0; i < v.size(); ++i) std::cin >> v[i];
// .. or use range based for loop
for (auto& e : v) std::cin >> e;