2015-11-10 3 views
-1

Ребята, почему этот код становится бесконечным циклом? Я изучаю C++ так что если вы можете объясните решение, для меня это было бы очень важно!важное решение для цикла while

// Odd_or_Even.cpp : This program determinate if a number is Odd or Even 
// 

#include "stdafx.h" 
#include "std_lib_facilities.h"; 


int main() 
{ 
    int num = 0; 
    bool repeat = true; 

    while (repeat == true) 
    { 
     cout << "Please enter an integer to determinate if it's odd or even: "; 
     cin >> num; 
     cout << "\nReading data..."; 

     if (!cin) { 
      cout << "Failed\n"; 
      cout << "There is some problem with the number, sorry!\n"; 
      cout << "\n"; 
      cin.clear(); 
     } 
     else 
     { 
     cout << "God job, now stop lose time."; 
     repeat = false; 
     } 


    } 

    keep_window_open(); 
    return 0; 
} 

Спасибо!

EDIT: ok Я набрал if для блокировки цикла, но если вы попытаетесь написать письмо, вместо числа, оно все равно идет в цикле!

+2

У вас должна быть строка, которая изменит значение repeat на false в выражении if – brenners1302

+0

Да, я знаю, но я хочу, чтобы, когда я говорю «извините», он возвращается в начало и повторяется, вместо этого выход становится бесконечным в : cout << "Failed \ n"; cout << «Существует некоторая проблема с номером, извините! \ N"; cout << "\ n"; – RavenJe

+0

, если он вернется к началу, чтобы вызвать другое значение, когда вы предлагаете закончить цикл? – brenners1302

ответ

0

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

P.S. поскольку повторное логическое значение, в то время (повтор) такая же, как и при (повтор == TRUE)

0

Ваш код устанавливает repeat в true и затем ваши работает в то время как время цикла

время (повтор == правда)

чтобы получить его из бесконечного цикла вам нужно сделать, это где-то внутри время цикла:

повтора = ложь;

В каком состоянии вы хотели бы вырваться из цикла?