Задача.... В заданом тексте нужно найти все слова полиндромы(слова читаемые в ту и другую сторону одинаково. Пример: Казак, Радар) Вобще в этой задачке нужно сравнивать буквы слова между собой что бы понять полиндром это или нет. Вопрос только как. Либо через кодировку каждой буквы(кириллица) либо сравнивать сами символы межу собой... Подскажите пожалуйста какой способ лучше и как это удобней сделать. Кончено желательно с примерами. Заранее благодарен
XbIxbI устанавливаешь указатели на начало и конец слова и сравниваешь символы, на которые они указывают, при каждой итерации приближаешь указатели друг друга, пока первый меньше второго. Меня удивляют нынешнию студенты, как такое может вызывать затруднения? Код (Text): int check_polindrom(char *s) { char *start = s, *end = s + strlen(s); while (start < end) if (*start++ != *--end) return 0; return 1; }
Немного дополню слова медузы Сперва все символы в слове нужно привести к одному регистру. Т.е. либо все строчные, либо все заглавные. Иначе пример медузы "Казак" полиндромом считать не будет. Если под виндоус - есть CharUpperA Должны быть и штатные средства С, которые я не знаю =)
tolower() и toupper(). Хотя если ascii, то к нижнемы регистру можно привести через "| 0x20" p.s. Конечно, только латиница.
Предварять просьбой "введите русские буквы в Windows-кодировке" а в utf8 кириллица переводится к прописным "& 0xDF", а к строчным "| 0x20"
Mikl___ А можно выбирать символы из таблицы перекодировки. Код (Text): mov ebx,table mov esi,text mov edi,esi @@:lodsb xlat stosb test al,al jne @b