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

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

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

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

Сообщение arriah » 11.07.2016 05:17:23

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

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


То есть я так понимаю, что достаточно последний символ переместить на первое место и задача решена? зачем двигать все символы?
arriah
новенький
 
Сообщения: 94
Зарегистрирован: 29.07.2015 16:42:35

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

Сообщение Oleg_D » 13.07.2016 19:34:56

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

Разумеется. Только не забыть потом удалить его с последнего места.
Oleg_D
постоялец
 
Сообщения: 390
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение bormant » 14.07.2016 13:24:30

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;
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01


Вернуться в Книга "Песни о Паскале"

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru
cron