Написать подпрограмму, которая отображает каждое N-е слово в предложении зеркально - Pascal ABC
Формулировка задачи:
Доброго времени суток. Помогите пожалуйста. Написать подпрограмму, которая отображает каждое N-е слово в предложении
зеркально.
Решение задачи: «Написать подпрограмму, которая отображает каждое N-е слово в предложении зеркально»
textual
Листинг программы
- procedure revers(k:byte;var s,sl:string);
- var i:byte;
- c:char;
- begin
- for i:=1 to length(sl) div 2 do
- begin
- c:=sl[i];
- sl[i]:=sl[length(sl)-i+1];
- sl[length(sl)-i+1]:=c;
- end;
- delete(s,k,length(sl));
- insert(sl,s,k);
- end;
- var s,sl:string;
- n,i,k:byte;
- begin
- writeln('Введите предложение, слова разделены пробелами, в конце точка');
- readln(s);
- repeat
- write('n>0 n=');
- readln(n);
- until n>0;
- sl:='';
- k:=0;
- for i:=1 to length(s) do
- if not(s[i] in [' ','.']) then sl:=sl+s[i]
- else
- begin
- k:=k+1;
- if k mod n=0 then revers(i-length(sl),s,sl);
- sl:='';
- end;
- if k<n then write('В строке нет ',n,' слов')
- else write(s)
- end.
Объяснение кода листинга программы
- Создается процедура
revers
, которая принимает два параметра:k
- номер слова, которое нужно отобразить зеркально, иsl
- исходное предложение, в котором нужно отобразить это слово зеркально. - Внутри процедуры используется цикл
for
, который проходит по каждому символу в предложенииsl
. - На каждой итерации цикла происходит следующее:
- Слово
sl[i]
выводится на экран. - Строка
sl
изменяется таким образом, чтобы текущий символsl[i]
был перемещен в конец строки. - Строка
sl
снова изменяется таким образом, чтобы текущий символsl[i]
был перемещен в начало строки.
- Слово
- После завершения цикла
for
удаляется словоs[i]
из исходной строкиs
. - Если в исходной строке
s
осталось меньше слов, чем указано в параметреn
, то выводится сообщение об этом. - В противном случае выводится исходная строка
s
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д