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

Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Может быть полезна студентам-первокурсникам и преподавателям информатики.

Модераторы: Oleg_D, Модераторы

Ответить
arriah
новенький
Сообщения: 94
Зарегистрирован: 29.07.2015 15:42:35

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

Сообщение arriah »

Вот почитал немного книжку "А слабо?"
Вопрос возник по заданию Д из 44 главы

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


То есть я так понимаю, что достаточно последний символ переместить на первое место и задача решена? зачем двигать все символы?
Oleg_D
постоялец
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Сообщение Oleg_D »

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

Разумеется. Только не забыть потом удалить его с последнего места.
Аватара пользователя
bormant
постоялец
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01

Сообщение 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;
Ответить