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

Глава 44. Задание Д

СообщениеДобавлено: 11.07.2016 05:17:23
arriah
Вот почитал немного книжку "А слабо?"
Вопрос возник по заданию Д из 44 главы

Д) Вращение строки вправо. Напишите процедуру, перемещающую 1-й
символ строки на место 2-го, 2-й — на место 3-го и т.д. Последний символ должен
занять 1-е место. Воспользуйтесь средствами для обработки строк.


То есть я так понимаю, что достаточно последний символ переместить на первое место и задача решена? зачем двигать все символы?

Re: Глава 44. Задание Д

СообщениеДобавлено: 13.07.2016 19:34:56
Oleg_D
arriah писал(а):То есть я так понимаю, что достаточно последний символ переместить на первое место и задача решена? зачем двигать все символы?

Разумеется. Только не забыть потом удалить его с последнего места.

Re: Глава 44. Задание Д

СообщениеДобавлено: 14.07.2016 13:24:30
bormant
arriah писал(а):зачем двигать все символы?
А вы задумайтесь, что именно произойдет при этом?

Вариантов, как всегда больше одного. Для однобайтных символов:
Код: Выделить всё
procedure rotate(var s: String);
var t: Char; i: Integer;
begin
  if Length(s)<2 then Exit;
  t:=s[Length(s)];
  for i:=Length(s) downto 2 do s[i]:=s[i-1];
  s[1]:=t;
end;

Код: Выделить всё
procedure rotate(var s: String);
begin
  if Length(s)<2 then Exit;
  s:=s[Length(s)]+Copy(s,1,Length(s)-1);
end;