Написать подпрограмму, которая отображает каждое 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д