Поиск в тексте слов-"перевертышей" - C (СИ)
Формулировка задачи:
Дан текст. Выделить из текста все слова"перевертыши".
Различие строчных и прописных букв во внимание не принимать.
Например: "top apple pot". Top —pot - слова "перевертыши".
Простите если даная тема была....
Были идеи, но не знаю как её реализовать поскольку на си работаю недавно
Решение задачи: «Поиск в тексте слов-"перевертышей"»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main()
{
int i = 0, j = 0, k, m, flag = 0;
char s[80], A[30][30], word[30], *p;
puts("Input text:");
fgets(s, 80, stdin);
for(p = strtok(s, " ,:-\n"); p; p = strtok(NULL, " ,:-\n"), i++){
strcpy(A[i], p);
for(m = 0; m < strlen(A[i]); m++){
if(A[i][m] >= 'A' && A[i][m] <= 'Z')
A[i][m] = A[i][m] + 32;
}
}
for(j = 0; j < i; j++){
strcpy(word, A[j]);
strrev(word);
for(k = j; k < i; k++){
if(0 == strcmp(A[k], word) && j != k){
printf("Inverse words %s -> %s\n", A[j], A[k]);
flag = 1;
}
}
}
if(flag == 0)
puts("Inverse words not found.");
return 0;
}
Объяснение кода листинга программы
- Вводится текст, который необходимо проанализировать.
- Текст разбивается на отдельные слова (допускаются пробелы, запятые, точки, двоеточия и тире в качестве разделителей).
- Каждое слово приводится к нижнему регистру.
- Для каждого слова в тексте проверяется, является ли оно перевертышем другого слова в тексте (с учетом регистра). Если да, то выводится сообщение об этом.
- Если в тексте не найдено ни одного перевертыша, выводится соответствующее сообщение.