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

  1. Создается тип TSetOfChar, который представляет собой множество символов. В данном случае, это просто набор пробелов, запятых и точек.
  2. Функция GetNextWordIndexes считывает следующее слово в строке. Она принимает строку s, начальный индекс StartIndex и конечный индекс FinishIndex в качестве параметров. Если StartIndex меньше 1, то функция устанавливает StartIndex равным длине строки s плюс 1 и возвращает False. Затем она проверяет каждый символ в строке от StartIndex до FinishIndex, и если символ не является пробелом, запятой или точкой, то она увеличивает StartIndex и возвращает True. Если StartIndex больше FinishIndex, то функция устанавливает StartIndex и FinishIndex равными Length(s) плюс 1 и возвращает False.
  3. Переменные s, IndxStart и IndxFinish инициализируются перед первым вызовом функции GetNextWordIndexes.
  4. В цикле, функция GetNextWordIndexes считывает следующее слово, затем меняет местами первую и последнюю буквы этого слова, сохраняя результат в переменной TempChar. Затем она устанавливает IndxStart равным IndxFinish плюс 1.
  5. После завершения цикла, вывод s будет содержать все слова, в которых первая буква была заменена на последнюю, а последняя буква на первую.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы