Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Работа с текстом. ротор, казак, наган...


Автор: lacrack 3.5.2006, 22:55
Дан фай, в нем через ; написаны слова, и нужно вывести типа казак, наган, ротор, если они там есть.
Тут я не могу понять как быть с пробелам: ведь кто-то может до и после понаставить пробелов. А также меня разочаровывает неправильное прочтение вин кодировки, прочитывается, как "ххъърррхъ ёеъхх". Или же паскаль работает только с 866 кодировкой и мне дожны предоставить текстовый файл только в этом формате? 

Спасибо. 

Автор: sergejzr 3.5.2006, 23:25
Такие выражения зовуться палиндромами. Насчёт пробелов - смотри условия задачи. По кодировке - создавай отдельную тему, потоиу что по правилам нашего форума:
Модератор: Пожалуйста, один топик - один вопрос. 

Автор: lacrack 4.5.2006, 21:41
прогу написал, вроде стабильная кому может пригодится.

Код

uses crt;
var S:text;
a:char;
tmp,b:string;
flag2,flag,l,i,j,n,c:integer;
begin
clrscr;
assign(S, 'input.txt');
reset(S);
b:='';
tmp:='';
writeln('‘Слова и фразы палиндромы:');
writeln;
writeln;
  c:=0;

while not EOF(S) do
 begin
  read(S,a);
  n:=0;
  if (a<>';') and (a<>'.') then
  begin
    b:=b+a;
     if a<>' ' then tmp:=tmp+a;
  end;

  if (a=';') or (a='.') then

      begin
           l:=length(tmp);

           for i:=l downto 1 do
                    if tmp[i] = tmp[l-i+1] then
                       inc(n);

           if n=l then
              begin
                 inc©;
                 write©;
                 write('- ');
                 writeln(b);
              end;

           b:='';
           tmp:='';
      end;

 end;
 close(S);
 writeln;
 writeln;

 if c=0 then writeln('не найдено...');

 writeln;
 writeln;
 writeln('Нажмите enter...');
 readln;
end. 
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)