этот код я писал для Seqular, чтоб его 2к символов не смущали
Меня уже не смущают. В принципе процедуры я понял как написать. Примерный ход программы таков: + Открываем файл, считываем оттуда массив символов. + Смотря с конца и далее на один символ меньше, считаем этот фрагмент словом. + Проверяем слово на палиндром. - Если да - Исключаем это слово из рассмотрения. - Если нет - уменьшаем слово, до тех пор, пока не станет палиндромом. + Действуем до тех пор, пока не дойдем до конца массива. Поддерживаю также проект сообщество молодых сисадминов
Alexander, алгоритм, который мы с тобой думали - не пройдет... Надо что-то иное придумать... snaper1993, есть решение 4-ой, но оно не верное... Т.е. работает, но не совсем те палиндромы выделяет Поддерживаю также проект сообщество молодых сисадминов
Alexander, алгоритм, который мы с тобой думали - не пройдет... Надо что-то иное придумать...
Что значит не пойдёт?! Всё как надо выдаёт! Вот наспех дописанный(часть кода уже выложил выше) вариант:
Code
uses crt; type Arr=array[1..2000] of char; var i,n,k:word; c:Arr; function testpalindrom(c:Arr;i,j:word):boolean; var test:boolean; k:word; begin test:=true; for k:=1 to (j-i+1) div 2 do if c[i+k-1]<>c[j-k+1] then begin test:=false; break; end; testpalindrom:=test; end; procedure writestr(c:Arr;i,j:word); begin for i:=i to j do Write(c[i]); WriteLn; end; begin ClrScr; n:=0; repeat inc(n); Read(c[n]); until not ((c[n]>='a') and (c[n]<='z')); dec(n); i:=1; k:=n; while i<>n do begin if testpalindrom(c,i,k) then begin Writestr(c,i,k); i:=k+1;k:=n;end else dec(k); end; readKey; end.
во-первых пишется через "с" и с мягким знаком, а во-вторых никто и не напрягался.
Quote (Victoris)
ему уже задачи не нужны
Вообще-то это я продемонстрировал Seqular'у, что алгоритм "пройдёт", а snaper1993 всё равно не сможет подправить пару строк, чтоб не с клавы ввод был, а из файла . Скажем дружно- нафиг нужно!
Alexander, Скопировал твой код, но так и не понял, как в него вводить данные.. ввожу по символам - завершается после первого же.. Ввожу строкой - в бесконечный цикл падает. Хм.... Как быть? Поддерживаю также проект сообщество молодых сисадминов
Alexander, В моем варианте примерно такой же код получился. Только перед вызовом функции проверки на палиндром я сравнивал c[i] и c[j] символы. Если они не равны, то и палиндрома получиться не может Поддерживаю также проект сообщество молодых сисадминов
а snaper1993 всё равно не сможет подправить пару строк, чтоб не с клавы ввод был, а из файла
Ти не думай што я вобще уже тупой, главние функции вот:
Code
var f,f1:text; assign(f,'palindrome1.dat'); reset(f); assign(f1,'palindrome1.sol'); rewrite(f1); readln(f,"считиваем переменную с файл"); close(f); writeln(f1); close(f1,"записуем переменную в файл"); end.
Добавлено (08.11.2008, 01:18) --------------------------------------------- ой в конце не туда записал: [code] var f,f1:text; assign(f,'palindrome1.dat'); reset(f); assign(f1,'palindrome1.sol'); rewrite(f1); readln(f,"считиваем переменную с файл"); close(f); writeln(f1,"записуем переменную в файл"); close(f1); end.
Добавлено (08.11.2008, 01:18) --------------------------------------------- ой в конце не туда записал:
Code
var f,f1:text; assign(f,'palindrome1.dat'); reset(f); assign(f1,'palindrome1.sol'); rewrite(f1); readln(f,"считиваем переменную с файл"); close(f); writeln(f1,"записуем переменную в файл"); close(f1); end.
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?