@extowgen

Почему не работает код (С++)?

должна выводить числа которые делятся на 2, но не делятся на 4. А в итоге наоборот: выводит только те,которые делятся на 4
суть:
for(x=0;x<100;x=x+2)
{
    if(x%4) continue;
    cout<<x;
}
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ответы на вопрос 5
@vilgeforce
Раздолбай и программист
if(x%4) continue; Что по вашему делает? И, в частности, чему будет равно 5%4?
Ответ написан
Комментировать
@Alexander1705
Можно так:
for(int x = 0; x < 100; x = x + 2)
{
    if(x % 4) cout << x;
}


Или так:
for(int x = 0; x < 100; x = x + 2)
{
    if(x % 4 == 0) continue;
    cout << x;
}


Суть в том, что в условии ноль приводится к false, а любое другое число - к true.

Ну и вообще, есть более оптимальный способ:
for(int x = 2; x <= 100; x += 4)
{
    cout << x;
}
Ответ написан
Therapyx
@Therapyx
Data Science
int main() {
	int x;
	cin >> x;
	if (x % 2 == 0 && x % 4 != 0) {
		cout << x << endl;
	}
}

% - высчитывает остаток, к примеру 13 % 2. в 13 поместится 6 раз 2 = 12. итого 1 остаток. Дак вот этот остаток и идет как итог после операции с %. Любое четное число будет иметь остаток 0 если его делить на 2, но не все делятся на 4, поэтому и x % 2 == 0 "И" x % 4 != 0
Ответ написан
Комментировать
slinkinone
@slinkinone
Агент "Везде успеть"
if(x%4 != 0 && x%2 == 0)
    cout<<x;
else continue;
Ответ написан
Комментировать
@SuperHamster
Чтобы код корректно работал достаточно просто инвертировать условие, т.к. 0 в C++ - это false, а все ненулевые значения - true.
for (x = 0; x < 100; x = x + 2)
{
    if ( !(x % 4) ) continue;
    cout << x;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы