Во всех словах заменить первую букву на последнюю, а последнюю на первую. Как считывать каждое слово? - Turbo Pascal
Формулировка задачи:
Ребята, написал программу, выполняла свое предназначение, но меня преподаватель попросил записать в строку 2 слова, и программа считывает первую букву первого и последнюю второго, таким образом меняются символы в конце и начала строки, как считывать каждое слово и менять в нем первые и последние буквы местами, вот моя программа, она работает корректно только с одним словом в строке.
Решение задачи: «Во всех словах заменить первую букву на последнюю, а последнюю на первую. Как считывать каждое слово?»
textual
Листинг программы
program ReverseFirstAndLastCharsInWord; type TSetOfChar = set of char; const Delimiters: TSetOfChar = [' ', ',', '.']; function GetNextWordIndexes(const s: string; var StartIndex, FinishIndex: integer): boolean; begin if (StartIndex < 1) then begin StartIndex := Length(s) + 1; FinishIndex := Length(s) + 1; GetNextWordIndexes := False; exit; end; while StartIndex <= Length(s) do if not (s[StartIndex] in Delimiters) then break else Inc(StartIndex); if StartIndex > Length(s) then begin StartIndex := Length(s) + 1; FinishIndex := Length(s) + 1; GetNextWordIndexes := False; exit; end; FinishIndex := StartIndex; while FinishIndex <= Length(s) do if (s[FinishIndex] in Delimiters) then break else Inc(FinishIndex); Dec(FinishIndex); GetNextWordIndexes := True; end; var s: string; IndxStart, IndxFinish: integer; TempChar: char; begin s := 'qwe ,rrr jfjf 123 -54 '; writeln(s); IndxStart := 1; while GetNextWordIndexes(s, IndxStart, IndxFinish) do begin TempChar := s[IndxStart]; s[IndxStart] := s[IndxFinish]; s[IndxFinish] := TempChar; IndxStart := IndxFinish + 1; end; writeln(s); end.
Объяснение кода листинга программы
Этот код написан на Turbo Pascal и решает задачу, которая заключается в том, чтобы заменить первую букву каждого слова на последнюю, а последнюю букву на первую. Вот как он работает:
- Создается тип
TSetOfChar
, который представляет собой множество символов. В данном случае, это просто набор пробелов, запятых и точек. - Функция
GetNextWordIndexes
считывает следующее слово в строке. Она принимает строкуs
, начальный индексStartIndex
и конечный индексFinishIndex
в качестве параметров. ЕслиStartIndex
меньше 1, то функция устанавливаетStartIndex
равным длине строкиs
плюс 1 и возвращаетFalse
. Затем она проверяет каждый символ в строке отStartIndex
доFinishIndex
, и если символ не является пробелом, запятой или точкой, то она увеличиваетStartIndex
и возвращаетTrue
. ЕслиStartIndex
большеFinishIndex
, то функция устанавливаетStartIndex
иFinishIndex
равнымиLength(s)
плюс 1 и возвращаетFalse
. - Переменные
s
,IndxStart
иIndxFinish
инициализируются перед первым вызовом функцииGetNextWordIndexes
. - В цикле, функция
GetNextWordIndexes
считывает следующее слово, затем меняет местами первую и последнюю буквы этого слова, сохраняя результат в переменнойTempChar
. Затем она устанавливаетIndxStart
равнымIndxFinish
плюс 1. - После завершения цикла, вывод
s
будет содержать все слова, в которых первая буква была заменена на последнюю, а последняя буква на первую.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д