2016-09-26 200 views
-1

我有一個問題,我的程序只是無限循環。 控制檯寫「NE」或「JA」C++無限循環

//翻譯英語氖就沒有和JA是肯定的了。

//的事情是,我想要寫網元后退出程序。如果我寫Ja,然後再返回程序開始。

//我知道我的代碼是廢話,但我在這裏尋求幫助。

反正有一個代碼:

#include <Windows.h> 
#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 

    { 
     while (true) 
     { 
     system("cls"); 
     cout << "Noteikt naturalo skaitlu summu intervala no A [1] lidz B [N].\n\n"; 
     Sleep(850); 
     cout << "Ludzu ievadiet naturalo skaitli: \n\n"; 
     int Naturalais, Summa = 0; 
     cout << "--> "; cin >> Naturalais; cout << "\n"; 

     for (int i = 1; i <= Naturalais; ++i) 
     { 
      Summa += i; 
     } 
     Sleep(250); 
     cout << "Summa = " << Summa; cout << "\n\n"; 

     char Atbilde; 

     cout << "Atkartot Ievadi? (Ja = Ievadit naturalo skaitli velrezi/Ne = Ne uz Aizvert Programmu.\n\n"; 
     cout << "--> "; cin >> Atbilde; cout << "\n"; 

     if (Atbilde == 'Ne' || Atbilde == 'ne') 
      return 0; 
     if(Atbilde == 'Ja' || Atbilde == 'JA') 
      break; 
     } 
    } 
} 

回答

1

第一折:Atbilde == 'Ne' Atbilde是char'Ne'是2個字符。我很驚訝這個編譯。但我懷疑它永遠不會匹配。

然後:不管你的答案如何,你總是退出循環 - 通過returnbreak。顯然你只想退出循環的兩種情況之一。

1

附加頭文件爲c_string而不是字符串

聲明Atbilde作爲字符串 和應用

if (Atbilde.compare(0,2,"Ne") == 0 || Atbilde.compare(0,2,"ne") == 0) 
     continue; 
    if(Atbilde.compare(0,2,"Ja") == 0 || Atbilde.compare(0,2,"JA") == 0) 
     break;