C/C++

Остановка программы c++

У меня задание в с++, условие все написал но есть одно но в задаче сказано программа отключиться только если пользователь введет символ !, а если не введет она должна работать
тоесть например задача будет введите четные числа от одного до 10 если ввел четное то ответь будет верно. когда выйдет строка верно. программа не должна останвалитсья а должна работать и я должен вводить еще цифры до той степени пока не введу !
#include <iostream>
#include <string>
using namespace std;
bool is_number(const string& integer) {
auto begin = 0U;
auto end = integer.length();
if (integer.front() == '-' || integer.front() == '+') ++begin;
while (isdigit(integer.at(begin))) if (++begin == end) break;
return begin == end;
}
int main() {
system("chcp 1251 > nul");
string integer;
while (true) {
cout << "Введите чётное число: ";
cin >> integer;
while (cin.get() != '\n');
if (integer.front() == '!') break;
if (is_number(integer)) {
auto back = integer.back() - 48;
puts(back & 1 ? "Не верно!" : "Верно!");
} else puts("Ошибка!");
}
}
RI
Rovshan Ismailov
85 606
Лучший ответ
надо вводить символы и преобразовывать их в числа или анализировать на служебные символы
Сергей Красиков короче вот задача : Write an application that asks user to type a vowel from the keyboard. if the character entered is vowel, display OK. Be sure to allow both uppercase and lowercase vowels. The program continues until the users types "!".
вот как я написал

#include
#include

using namespace std;

int main (){

int p;
char s;
int v;

cout << "Enter an Character" << endl;
cin >> s;

v = (s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u'|| s == 'A' || s == 'E' || s == 'I' || s == 'O' || s == 'U');

if (v){
cout << "OK" << endl;
}

return 0;

}
#include "iostream"
int main(){int a; while(std::cin>>a)std::cout<<a<<'\n';}

Заканчивает работу при вводе не-числа.
#include<stdio.h>
#include<locale.h>
#include<wchar.h>
union result
{
short int integer;
char string[2];
};

int main()
{
setlocale(0,"");
wprintf(L"Вводите значения от 0 до 10, для выхода нажмите '!'.\n");
union result res;

int n;
while(res.string[0]!='!')
{
wprintf(L"Введите значение:");
scanf("%s",res.string);
n=0;
/*
от res.string='0'(код 48) до
res.string='9'(код 57)
*/
for(int i=48;i<=57;i++)
{
if(res.integer==i)
res.integer=n;
else n++;
};
/*
если введено любое значение,
не входящее в '0'...'10',
то присваивается значение 10;
значение '!' не отображается
перед выходом из программы
*/
if((res.integer<0||res.integer>=10)&&(res.integer!=33))
res.integer=10;
if(res.integer!=33)
wprintf(L"Присвоено значение = %d \n",res.integer);
if(res.integer%2==0)
wprintf(L" Значение %d чётное\n",res.integer);
};
return 0;
}