У меня есть следующий код ниже:
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» во всех заглавных буквах.
Вот решение, которое завершит цикл 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
перед вашей основной функцией
Достаточно ли намёка?
#include <iostream>
int main()
{
char A[] = "END";
char B[10];
std::cin >> B;
std::cout << strcmp(A,B) << std::endl;
return(0);
}