2016-09-26 2 views
-1

У меня проблема, что моя программа просто бесконечна. После написания в консоли «Ne» или «Ja»C++ Infinite looping

// Перевод на английском языке Ne будет No и Ja будет Yes.

// Дело в том, что я хочу выйти из программы после написания Ne. И снова вернитесь к началу программы, если я напишу 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 символа. Я удивлен, что это компилируется. Но я сомневаюсь, что это когда-нибудь будет соответствовать.

Затем: Независимо от вашего ответа, вы всегда выходите из цикла - либо через return, либо break. Очевидно, вы хотите выйти из цикла только в одном из двух условий.

1

добавить заголовок файла CString вместо строки

Объявить 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;