Программа, определяющая является ли слово палиндромом

Разделитель — один из символов « ,.;:!?\"\'» (начиная с пробела и заканчивая апострофом). Буква — любой символ, отличный от разделителя. Слово — непустая последовательность букв, ограниченная с каждой стороны разделителем или концом строки. Например, в строке «x9i23!слово, ,» два слова — «x9i23» и «слово». Исходная строка вводится с клавиатуры, изменённая строка выводится на экран. Если в задании используется «заданное» слово, оно также вводится с клавиатуры. Разделители в программе представляются как множество.

code: #pascal
program fr;
label 1;
var i,n:integer;
    s,sub:string;
    mn:set of char;
function make_palindrom : boolean;
var
	map : array ['!'..'z'] of integer;
	x : char;
	i,m,count : integer;
	result : boolean;
begin
	m:=length(sub);
	count:=0;
	for x:='!' to 'z' do
		map[x]:=0;
	for i:=1 to m do
     if (sub[i] >= '!') and (sub[i] <= 'z') then
		    inc(map[sub[i]]);
	for x:='!' to 'z' do
		if map[x] mod 2 = 1 then
			inc(count);
	if count >= 2 then
		result := false
	else
		result := true;
	make_palindrom := result;
end;
 
begin
mn:=[' ',',','.',';',':','!','?','"'];
write('Vvedite slova: ');
readln(s);
  n:=0;
1:for i:=1 to length(s) do
	if (s[i] in mn) then
	begin
		if i=1 then
		begin
			delete(s,1,1);
			goto 1;
		end else
		begin
			inc(n);
			sub:=copy(s,1,i-1);
			if not make_palindrom then
				writeln(n,' slovo: ',sub)
			else
				writeln('    ',n,' slovo: PALINDROM( ',sub,' )');
 
 
		end;
		delete(s,1,i);
		goto 1;
    end;
sub := s;
if not make_palindrom then
			writeln(n+1,' slovo: ',sub)
	else
  		writeln('    ',n+1,' slovo: PALINDROM( ',sub,' )');
 
  readln;
end.      
Поделиться:

Похожие статьи: