Консультация № 169226
10.06.2009, 10:03
0.00 руб.
0 2 1
Словом будем называть группу символов, отдельную от других символов пробелом или запятой. В произвольной строке поменять местами первое и последнее слово.

Обсуждение

давно
Старший Модератор
31795
6196
10.06.2009, 11:04
общий
robocop2000:
Вы не пробовали пользоватся поиском, такую задачу уже решали в рассылке.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
10.06.2009, 11:22
общий
это ответ
Здравствуйте, robocop2000.
В строке первым словом считал все, что находится до первого разделителя. Последним, соответственно, все, что находится после последнего разделителя.
Код:

program Pascal_169226;

var
str,fWord,lWord:String;
fDelim,lDelim:Integer;
begin
{* Вводим строку *}
WriteLn('Input string:');
ReadLn(str);
{* Позиция первого разделителя *}
fDelim:=1;
{* Позиция последнего разделителя *}
lDelim:=Length(str);
{* Ищем первый разделитель *}
while fDelim<=lDelim do begin
if (str[fDelim]=',') or (str[fDelim]=' ') then begin
break;
end;
Inc(fDelim);
end;
{* Ищем последний разделитель *}
while fDelim<=lDelim do begin
if (str[lDelim]=',') or (str[lDelim]=' ') then begin
break;
end;
Dec(lDelim);
end;

if fDelim>lDelim then begin
WriteLn('This is one word');
end else begin
{* Копируем первое слово *}
fWord:=copy(str,1,fDelim-1);
{* Копируем последнее слово *}
lWord:=copy(str,lDelim+1,Length(str)-lDelim);
{* Собираем новую строку *}
str:=lWord+copy(str,fDelim,lDelim-fDelim+1)+fWord;
{* Выводим результат *}
WriteLn('Result string:');
WriteLn(str);
end;
ReadLn;
end.

Пример:
Код:

Input string:
This is a test string
Result string:
string is a test This
5
Спасибо вам огромное!
Форма ответа