Ввод C не принимается с использованием cin

#c

#c

Вопрос:

Я только начал программировать и попытался написать простую программу, чтобы проверить, четное ли число, вывести «ДА», если оно четное, или «НЕТ».

 #include <iostream>
using namespace std;

int main()
{
    int w;
    int remainder;
    
    cout << "Enter the number : ";
    
    cin >> w ; 
    remainder = w % 4;
    
    if(remainder==0) 
        cout << "nYes " << endl; 
    
    else
        cout << "nNO " << endl; 


    return 0;
}
  

Когда я пытаюсь запустить эту программу, появляется следующий вывод:

 $g   -o main *.cpp
$main
Enter the number : 
Yes 
  

Что я здесь делаю не так?

Комментарии:

1. Я не могу воспроизвести проблему, показанный вами код и команда компиляции должны работать должным образом

2. Что произойдет, если вы добавите << std::endl после первого cout ? Как именно происходит сеанс? Каков ваш ввод?

3. Что произойдет, если вы инициализируете w ? С 1? С 4? Т. е. Что заставляет вас думать, что ввод не принят?

4. Ваш ввод должен быть помещен в поле ввода компилятора, именно так обычно работают онлайн-компиляторы. Вы не видите его в командной строке.

5. @Cassandra также обратите внимание, что для проверки четных чисел вы должны проверять оставшуюся часть деления на 2, а не на 4.

Ответ №1:

попробуйте использовать это..

 #include<iostream>
using namespace std;
int main()
{
    int w;
    cout<<"Enter the number : ";
    cin>>w;
    string s=(w%2==0)?"even number":"odd number";
    cout<<w<<" is a "<<s;
    return 0;
 }
  

Комментарии:

1. Почему? Вам нужно протестировать свой код? Пожалуйста, уточните эксперимент, который вы хотите, чтобы OP выполнил. Какой результат приведет к какому пониманию? Что означает каждый из результатов, которые вы ожидаете, для анализа?

2. Нам нужно решение существующего кода, а не нового кода

3. ваша программа абсолютно нормально работает в моем компиляторе, в вашем компиляторе может быть проблема

4. Если есть проблемы с компилятором, я рекомендую вам использовать онлайн-компилятор, такой как repl.it/languages/cpp

Ответ №2:

Там есть одна логическая ошибка.

 remainder = w% 2;  // must be.
  

Проблема, о которой вы сообщили, может быть связана с используемой вами программой. Я использую Visual Studio, и это не вызвало у меня никаких проблем. Но вы также можете записать условия, используя круглые скобки:

 if(remainder==0) {
    cout << "nYes " << endl; 
}
else {
    cout << "nNO " << endl; 
}
  

и попробуйте их. Может быть, работает. (может быть, почему? Вы работаете над онлайн-компилятором. В этом случае я ничего не могу гарантировать)


ПОЧЕМУ %2

например: «2% 4» будет отвечать на 2. И это иногда может вызвать проблемы для онлайн-компиляторов. Самое логичное — получить простой ответ, выполнив «% 2». 2% 2 = 0 это дает нам более плавный ответ.

 1% 2 = 1,
2% 2 = 0,
3% 2 = 1
  

1 означает: не четное число.
0 означает: четное число.


Лучший способ — не пытаться исправлять ошибки онлайн-компиляторов. Потому что, если вы разрабатываете свой код для поврежденного компилятора, у вас возникнут проблемы с приличным компилятором. Я рекомендую использовать обычный компилятор, не подключенный к Сети.

Решение проблемы с функцией sleep не обязательно означает, что вы решили проблему. Этот путь может создать много проблем для вас при разработке больших программ.

Комментарии:

1. Проблема, о которой сообщается, заключается в сбое при чтении ввода. Как это связано с применяемым модулем? Всегда использовать {} — это философия, на которую я также подписываюсь, но она также не связана с проблемой. У меня создается впечатление, что вы пропустили обсуждение вероятных проблем в комментариях. Ваш ответ, похоже, не решает проблему, ничего не объясняет. Предположение об используемой «программе» недостаточно ясно. Лично я не поклонник «может быть», «попробуйте это» в ответах. Пожалуйста, постарайтесь быть более настойчивым.

2. @Yunnosch Помните, что вы работаете в онлайн-компиляторе. Мы пытаемся решить что-то нелогичное прямо сейчас. Первая проблема заключается в онлайн-компиляторе. И мы не знаем, как он может реагировать на коды. Иногда простая попытка может решить большие проблемы.