Проверка соответствия строки & quot; END & quot; и выход, если она соответствует

У меня есть следующий код ниже:

int main ()
{
char string[80];
bool Restart;

Restart = true;

while (Restart)
{
cout << "Enter a string\n" << endl;
cin.getline(string, 80);
cout << "\nYou entered: ";
printf(string, 80);
cout << endl;

int len=strlen(string);

bool flag = true;

for (int c=0; c!=len/2; c++)
{
if (flag)
{
if(string[c] != string[len-c-1])
{
flag = false;
}
}
else
{
break;
}
}

if (flag)
{
cout <<"\nThis is a Palindrome\n" << endl;
Restart = true;
continue;
}
else
{
cout << "\nThis is not a palindrome\n" << endl;
Restart = true;
continue;
}
cin.get();

}
}

Мне нужно найти способ проверить, является ли введенное пользователем значение «END» во всех заглавных буквах, и, если это так, выйти из программы. Я уверен, что могу справиться с выходящей частью, но у меня возникают проблемы с получением чего-то, что проверит, является ли введенная строка «END» во всех заглавных буквах.

0

Решение

Вот решение, которое завершит цикл while, если введено «END». Создайте вспомогательный метод для анализа END, Обратите внимание, что это очень специфично для проблемы и не очень многоразово. Его также сложнее поддерживать, в отличие от бета-решения, но вам не нужно беспокоиться о поддержке, пока вы не начнете писать большие программы.

bool Terminate(char* string, int len)
{
bool retval = false;
char* c = string;

if( 3 == len )  // "END\0"{
if('E' == string[0])
{
if('N' == string [1])
{
if('D' == string[2])
{
retval = true;
}
}
}
}

return retval;
}

Затем используйте его после int len=strlen(string); вот так:

if(Terminate(string, len))
{
break;  // Exit while loop
}

Убедитесь, что вы заявляете Terminate перед вашей основной функцией

0

Другие решения

Достаточно ли намёка?

#include <iostream>

int main()
{
char A[] = "END";
char B[10];

std::cin >> B;

std::cout << strcmp(A,B) << std::endl;

return(0);
}
0

По вопросам рекламы [email protected]