Привет, я новичок в этом сообществе, так что, возможно, этот вопрос, вероятно, уже задавали раньше. Кроме того, прежде чем мы перейдем к проблеме, создается Мой код, чтобы определить, является ли слово палиндромом или нет. Итак, вот проблема, мой код работает нормально, но я хотел бы повторить это слово-идентификатор 5 раз, также как цикл в примере.
#include <stdio.h>
int main()
{
char text[100];
int beg, mid, end, len = 0;
gets(text);
while (text[len] != '\0')
len++;
end = len - 1;
mid = len/2;
for (beg = 0; beg < mid; beg++)
{
if (text[beg] != text[end])
{
printf("This is not a palindrome.\n");
break;
}
end--;
}
if (beg == mid)
printf("This word is a Palindrome.\n");
return 0;
}
я бы сделал так:
#include <stdio.h>
int
checkPalindrome(char * inputString) {
char *temp = inputString+strlen(inputString)-1;
while (temp>inputString)
if (*temp--!=*inputString++)
return 0;
return 1;
}
void main()
{
char text[100];
int count=0;
while(count++ != 5)
{
printf("Enter word: \n");
scanf("%s", text);
if (checkPalindrome(text)
printf("This word is a Palindrome.\n");
}
}
Все, что вам нужно сделать, это иметь переменную, которая начинается в начале массива, и переменную, которая начинается в конце, и выполнять цикл, пока они не будут равны друг другу. Кроме того, действительность слова уже подтверждена.
int main()
{
char text[100];
int start = 0;
int end = sizeof(text) - 1;
bool isPalendrome = true;
while(start <= end)
{
var char1 = text[start];
var char2 = text[end];
if (char1 == char2)
{
start++;
end--;
}
else
{
printf("This word is not a palindrome");
isPalindrome = false;
break;
}
}
if (isPalindrome)
{
printf("Word is a palindrome");
}
return 0;
}
Вы просмотрели сообщения об ошибках? Я только что заметил, что пропустил там точку с запятой, и соответственно обновил ответ.
Никогда не используйте Когда-либо
gets
. Это функция опасный, которая даже была удалена из языка C. Используйте, например. Вместо этогоfgets
, но имейте в виду отличия отgets
.