2015-02-20 2 views
0

Я не знаю, как сделать программу, которая выйдет при нажатии символа «q». Я делаю это:Завершить программу на символе 'q'

#include <iostream> 
#include <limits> 


using namespace std; 

int main() 
{ 
double arg; 
char c; 

while (c!= 'q' && c != 'Q') 
{ 
    cout << "Please enter a number x (q = program quit) : " << endl; 
    cin >> arg; 

    if (cin.fail()) 
    { 
     cin.clear(); 
     cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
    } 
} 


return 0; 

}

Программа не выход на 'Q' или 'Q'. Просто продолжайте спрашивать о «Пожалуйста, введите число x (q = program quit):». Как мне это сделать? Спасибо

+1

'arg' является' double'. 'double' не может содержать' q' или 'Q'. Читайте в то, что может хранить числа и буквы (подсказка: строка). – chris

+0

Вы никогда не обновляете свою переменную 'c', чтобы она никогда не могла равняться« Q »или« q » –

+0

Как преобразовать double в char? –

ответ

0

Вы не читали «c» в коде.

+0

Как я могу преобразовать double в char тогда? Мне нужна эта двойная переменная, а также –

+0

вы можете читать строку просто, если она «q» или «Q», а затем сломать иначе, используя строковый поток, чтобы преобразовать строку в float следующим образом: istringstream ss (str); ss >> arg; – user1627167

+0

Можете ли вы предоставить код? –

0

@ пользователь1627167 спасибо. Оно работает. Код:

#include <iostream> 
#include <limits> 
#include <sstream> 

using namespace std; 

int main() 
{ 
    double arg; 
    string s; 

    while (s != "q" && s != "Q") 
    { 
     cout << "Please enter a number x (q = program quit) : " << endl; 
     cin >> s; 

     istringstream ss(s); 
     ss >> arg; 

     if (cin.fail()) 
     { 
      cin.clear(); 
      cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
     } 
    } 


    return 0; 
} 
+0

Mark @ user1627167 правильный для того, чтобы помочь вам. –

Смежные вопросы