2016-02-24 2 views
-4

Я пытаюсь написать программу, которая принимает ввод четных чисел, пока пользователь не вводит нечетное число, а затем останавливается и добавляет все четные входы.Ввод утверждения IF внутри цикла?

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

Вот что я до сих пор:

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

int main() 
{ 
    int value; 
    cout << "Please enter a possitive number: "; 
    cin >> value; 
    if (value%2 == 0) { // divides the value entered by 2 too determine whether or not its even. 
     cout << "Please enter another even number: "; 
    } 
    else 
    { 

    } 

    cin.get(); 
    return 0; 
} 
+0

У вас нет никаких петель здесь , и у вас нет кода для добавления чисел. 'while (значение равно) {добавьте числа и введите приглашение для другого номера}' – crashmstr

ответ

3

Вам нужна петля, чтобы запросить ввод еще раз, если значение равно.

Вы вводите петлю while, только если value. И вы зацикливаетесь до value.

Затем нужно еще int, который представляет собой сумму и добавить значение суммы каждый раз при входе в цикл (каждый раз, когда у вас есть четное число)

Обратите внимание, что с этим решением не нужен if заявление. Условие в while петле

#include <iostream> 

using namespace std; 

int main() 
{ 
    int value; 
    int sum=0; 
    cout << "Please enter a possitive number: "<<endl; 
    cin >> value; 
    while (cin && value%2 ==0){ 
     sum+=value; 
     cout << "Please enter another even number: "<<endl;; 
     cin >> value; 
    } 

    cout<<"Sum of even number: "<<sum<<endl; 
    return 0; 
} 
+0

Вы должны проверить, выполнено ли чтение, или это может вызвать бесконечный цикл. – MikeCAT

+0

Спасибо за ответ, будет ли это способ подсчета количества введенных значений? – Aaron

+0

@MikeCAT Право. Я обновил соответственно –

0

что-то вроде этого?

int value; 
bool run = true; 
cout << "Please enter a possitive number: "; 
while(run) 
{ 

    cin >> value; 
    if (value%2 == 0) { // divides the value entered by 2 too determine whether or not its even. 
     cout << "Please enter another even number: "; 
    } 
    else 
    { 
     run=false 
    } 
} 

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

1

Просто сделайте это.

#include <iostream> 
#include <vector> 

using namespace std; 

int main() 
{ 
    int value; 
    vector<int> inputs; 
    cout << "Please enter a possitive number: "; 
    while (cin >> value) { // loop while successfully read an integer 
     if (value%2 == 0) { // divides the value entered by 2 to determine whether or not its even. 
      inputs.push_back(value); 
      cout << "Please enter another even number: "; 
     } 
     else 
     { 
      break; // get out of this loop 
     } 

    } 

    // add all the even inputs 
    int sum = 0; 
    for (vector<int>::iterator it = inputs.begin(); it != inputs.end(); it++) { 
     sum += *it; 
    } 
    cout << sum << endl; 

    return 0; 
} 

В качестве альтернативы, вы можете сделать добавление внутри цикла.

#include <iostream> 

using namespace std; 

int main() 
{ 
    int value; 
    int sum = 0; 
    cout << "Please enter a possitive number: "; 
    while (cin >> value) { // loop while successfully read an integer 
     if (value%2 == 0) { // divides the value entered by 2 to determine whether or not its even. 
      sum += value; 
      cout << "Please enter another even number: "; 
     } 
     else 
     { 
      break; // get out of this loop 
     } 

    } 

    cout << sum << endl; 

    return 0; 
} 
+0

Обратите внимание, что вектор является видом отходов. Вы можете добавить любое число в текущее целое внутри цикла, если оно равно. Абсолютно нет необходимости запоминать введенные значения. – tofro

+0

@tofro Я согласен, но я использовал его, потому что я интерпретировал вопрос, так как все добавления должны быть выполнены после ввода нечетного числа. – MikeCAT

0

еще один способ проверить, является ли оно четным или нечетным является проверка младший бит:

#include <vector> #include <iostream> #include <algorithm> int main() { int enteredValue = 0; std::vector<int> result; do { std::cout<<"Please enter even number : "; std::cin>>enteredValue; result.push_back(enteredValue); std::cout<<'\n'; }while(!(enteredValue & 0x01)); //check the lowest bit std::for_each(result.begin(), result.end(), [](int x){ std::cout<<x<<' '; }); return 1; }