помогите пожалуйста решить задачу по Free Pascal
|
|
Dant | Дата: Понедельник, 13 Декабря 2010, 17:43 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Есть текстовый файл,имя которого задается пользователем. Найти все фразы перевертыши и вывести их во второй файл.
|
|
| |
mitch | Дата: Понедельник, 13 Декабря 2010, 18:25 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Quote (Dant) Найти все фразы перевертыши это как?
|
|
| |
Dant | Дата: Понедельник, 13 Декабря 2010, 18:27 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| ну фразы перевертыши это типа ароза упала на лапу азора
|
|
| |
Angevengelist | Дата: Понедельник, 13 Декабря 2010, 18:32 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| Quote (Dant) ну фразы перевертыши это типа ароза упала на лапу азора Слова или фразы? Если фразы, какой диапазон слов для одной фразы? Или искать между одинаковыми словами?Добавлено (13.12.2010, 18:32) --------------------------------------------- Каждая фраза, начинается с новой строки в текстовом файле? Или содержится в неком тексте?
|
|
| |
Dant | Дата: Понедельник, 13 Декабря 2010, 18:39 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| именно фразы, а диапазаон любой наверное Добавлено (13.12.2010, 18:39) ---------------------------------------------
Quote (Angevengelist) Каждая фраза, начинается с новой строки в текстовом файле? Или содержится в неком тексте? в тексте, набор букв, слов и среди этого попадаются слова перевертыши
|
|
| |
Angevengelist | Дата: Понедельник, 13 Декабря 2010, 18:39 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Quote (Dant) именно фразы, а диапазаон любой наверное И как ты хочешь проверять фразы в тексте? Quote (Angevengelist) Каждая фраза, начинается с новой строки в текстовом файле? Или содержится в неком тексте?
|
|
| |
mitch | Дата: Понедельник, 13 Декабря 2010, 18:42 | Сообщение # 7 |
постоянный участник
Сейчас нет на сайте
| считывание и запись в файл Code begin assign(input, <имя первого файла>); rewrite(input); assign(output, <имя второго файла>); reset(output); readln(...); ... writeln(...); close(input); close(output); end; как примерно решать задачу: делаешь массив слов, считываешь слова, потом каждое слово проверяешь со всеми как проверять: в одном из слов перемещаешь последний символ вперед и смотришь, схожи ли эти 2 слова, только перед этим я думаю еще надо проверку сделать по количеству символов в слове, ибо слова с разным кол-вом букв не имеет смысл проверять
|
|
| |
Dant | Дата: Понедельник, 13 Декабря 2010, 18:43 | Сообщение # 8 |
был не раз
Сейчас нет на сайте
| Спасибо БОЛЬШУЩЕЕ!!!))
|
|
| |
mitch | Дата: Понедельник, 13 Декабря 2010, 18:43 | Сообщение # 9 |
постоянный участник
Сейчас нет на сайте
| Dant, так все-таки фразы или отдельные слова надо?
|
|
| |
Dant | Дата: Понедельник, 13 Декабря 2010, 18:46 | Сообщение # 10 |
был не раз
Сейчас нет на сайте
| именно фразы
|
|
| |
mitch | Дата: Понедельник, 13 Декабря 2010, 18:48 | Сообщение # 11 |
постоянный участник
Сейчас нет на сайте
| Dant, тогда нужно фразу просто перевернуть, т.е. последний символ меняешь местами с первым, предпоследний со вторым и так далее до середины фразы ну и далее каждый символ из каждой фразы проверяешь, совпадает ли он или нет
|
|
| |
Dant | Дата: Понедельник, 13 Декабря 2010, 18:53 | Сообщение # 12 |
был не раз
Сейчас нет на сайте
| спасибо большое)
|
|
| |
noTformaT | Дата: Понедельник, 13 Декабря 2010, 19:40 | Сообщение # 13 |
Ukrainian independent game developer
Сейчас нет на сайте
| функция проверки фразы перевертыша Code function WorldIs(s: string): boolean; var i: integer; b: boolean; begin b:=true; for i:=1 to length(s) div 2 do begin if not s[i]= s[(length(s) - i)+1] then begin b:=false; break; end; end; result:=b; end;
@noTformaT
|
|
| |
mitch | Дата: Понедельник, 13 Декабря 2010, 20:02 | Сообщение # 14 |
постоянный участник
Сейчас нет на сайте
| noTformaT, не учел что длина строки может быть нечетным числом вместо "length(s) div 2" нужно или "trunc(length(s) div 2)@" или "round(length(s) div 2)"
|
|
| |