Страница 1 из 1

Помогите пожалуйста решить 3 задачи в Паскале!

Добавлено: 22 сен 2008, 10:54
VistBacK
Помогите пожалуйста решить 3 задачи в Паскале! Буду очень благодарен!
Собственно вот и задачи:
1) Дано слово,состоящее из четного количества букв. Вывести на экран его первую половину.
2) Дано слово,состоящее из четного количества букв. Поменять местами его половины и вывести на экран.
3) Является ли введенное слово поллиндромом?
Заранее СПАСИБО!!!=)

Re: Помогите пожалуйста решить 3 задачи в Паскале!

Добавлено: 22 сен 2008, 12:28
Alex_Burn
3)
[Syntax='Pascal']
uses crt;
function is_palindrom(s: string): boolean;
begin
is_palindrom := true;

if length(s) <= 1 then exit
else begin

if s[1] = s[length(s)] then
is_palindrom := is_palindrom(copy(s, 2, length(s) - 2))
else is_palindrom := false;

end;
end;
var str : string;
begin
clrscr;
write('Input string '); readln(str);
writeln(is_palindrom(str));
readkey;
end.
[/Syntax]

Остальные потом посмотрю

Re: Помогите пожалуйста решить 3 задачи в Паскале!

Добавлено: 23 сен 2008, 12:02
YouROK
Первая задача делал в уме так что не проверял.

Код: Выделить всё

Function GetPolSlova(Str:String):String;
Begin
 GetPolSlova:=Copy(Str,Length(Str)div 2, Length(Str)div 2);
End;

Код: Выделить всё

Function GetPolSlova(Str:String):String;
var
 i: integer;
Begin
 For i:=1 to length(str) div 2 do
 GetPolSlova[i]:=str[i];
End;
Вторая

Код: Выделить всё

Function GetSlovo(Str:String):String;
var
 i: integer;
 c: char;
Begin
 For i:=1 to length(str) div 2 do
 begin
  GetSlova[i]:=str[i];
  GetSlova[i+length(str) div 2]:=str[i+length(str) div 2];
 end;
End;

Re: Помогите пожалуйста решить 3 задачи в Паскале!

Добавлено: 24 сен 2008, 13:45
Хыиуду
Можно и так

Код: Выделить всё

function is_palindrome(s: string): boolean;
var res: boolean; i: byte;
begin
   res:=true;
   for i:=1 to length(s) div 2 do
   if s[i]<>s[length(s)-i+1] then begin res:=false; break; end;
   is_palindrome:=res;

Первая половина слова
copy(s,1, length(s) div 2);

Поменять местами половины слова
copy(s, length(s) div 2+1, length(s) div 2)+copy(s,1, length(s) div 2);
end;