Другие языки программирования и технологии

Си работа со строками. Нужна помощь

Найти самое длинное слово в строке символов, перестановка символов в котором в обратном порядке также входит в строку. Использовать функции работы со строками(strrev, strstr....) Т.е. дано предложение: abc ded abba bkmnl. На выходе ожидаем увидеть слово abba. нужен хотя бы кусок нахождение нужного слова(переверну сама)....проблема в том, что если б было известно, что самое длинное входит, мы б его нашли, а потом посмотрели, есть оно в перевёрнутой строке или нет....а так не знаю((((((
#include <stdio.h>
#include <ctype.h>

int issim(char *beg, char *end) {
return end > beg ? (*beg == *end? issim(++beg, --end) : 0) : 1;
}

int main() {
char s[80];
char *cur = s, *beg, *mbeg = 0, *end, *mend;
int nsim, maxsim = 0, inword = 0;
fgets(s, 80, stdin);
while (*cur) {
if ( !inword && isalpha(*cur) ) {
inword = nsim = 1;
beg = cur;
}
if ( inword && isalpha(*cur) ) {
++nsim;
}
if ( inword && !isalpha(*cur) ) {
inword = 0;
end = cur - 1;
if ( issim(beg, end) && nsim > maxsim ) {
mbeg = beg;
mend = end;
maxsim = nsim;
}
}
++cur;
}
if (mbeg) {
cur = mbeg;
while (cur <= mend) {
putchar(*cur++);
}
} else {
puts("not found");
}
return 0;
}

ЗЫ: к сожалению у меня не получилось воспользоваться стандартными функциями strrev, strstr ...

Upd: решение не правильное, потому что делалось по примеру приведенному примеру: данная программа находит только максимальное симметричное слово. А если в строке например два слова asdfasdf и fdsafdsa, то она не найдет их, хотя они удовлетворяют условию
Виктор Куценко
Виктор Куценко
93 216
Лучший ответ
и так:
1. strsplit по пробелу и сортируем по длинне
2. если строка кратна 2, то разделяем её пополам (substring)
3. strcmp подстрок
и всё
это так я понял с условия, если не так пиши