Получить предложение, в котором самое длинное слово записано наоборот - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Дано предложение.получить предложение,в котором самое длин.слово записано наоборот

Решение задачи: «Получить предложение, в котором самое длинное слово записано наоборот»

textual
Листинг программы
var
  str, substr, maxWord: string;
  i, maxLen, maxLenInd, maxWordEnd: integer;
  bufCh: char;
 
function inWord(ch: char): boolean;
begin
  if (upcase(ch) >= 'A') and (upcase(ch) <= 'Z') then inWord := true
  else inWord := false;
end;
 
begin
  writeln('Enter the sentence:');
  readln(str);
 
  substr := '';
  maxLen := 0;
  maxLenInd := 0;
 
  if length(str) > 0 then
    for i := 1 to length(str) do
    begin
      if inWord(str[i]) then
      begin
        substr := substr + str[i];
        if i = length(str) then
          if (length(substr) > maxLen) then
          begin
            maxLen := length(substr);
            maxLenInd := i - length(substr) + 1;
            maxWord := substr;
          end;
      end
      else
      begin
        if (length(substr) > maxLen) then
        begin
          maxLen := length(substr);
          maxLenInd := i - length(substr);
          maxWord := substr;
        end;
        substr := '';
      end;
    end;
  writeln('The longest word in this sentence: ', maxWord);
  maxWordEnd := maxLenInd + maxLen - 1;
 
  while maxLenInd < maxWordEnd do
  begin
    bufCh := str[maxLenInd];
    str[maxLenInd] := str[maxWordEnd];
    str[maxWordEnd] := bufCh;
    inc(maxLenInd);
    dec(maxWordEnd);
  end;
 
  writeln('The new sentence is:');
  writeln(str);
  readln;
end.

Объяснение кода листинга программы

  1. Создаются переменные str, substr, maxWord типа string, i, maxLen, maxLenInd, maxWordEnd типа integer.
  2. В функции inWord(ch: char) проверяется, является ли символ ch заглавной буквой. Если это так, функция возвращает true, иначе - false.
  3. В основной части кода пользователю предлагается ввести предложение.
  4. Переменная substr инициализируется пустой строкой.
  5. Переменная maxLen инициализируется нулем.
  6. Переменная maxLenInd инициализируется нулем.
  7. Если длина предложения больше нуля, то происходит цикл for i := 1 to length(str).
  8. Внутри цикла проверяется, является ли текущий символ заглавной буквой с помощью функции inWord(str[i]).
  9. Если символ является заглавной буквой, то к переменной substr добавляется текущий символ.
  10. Если длина подстроки больше текущей максимальной длины, то обновляются значения максимальной длины и ее индекса.
  11. После завершения цикла подстрока заменяет текущее слово в предложении.
  12. Заменяется последний символ подстроки на первый символ нового слова.
  13. Заменяется последний символ подстроки на второй символ нового слова.
  14. И так далее, пока не будет заменено все символы подстроки.
  15. После замены символов подстроки на символы нового слова, выводится новое предложение.
  16. Вычисляется новый индекс конца подстроки с помощью maxLenInd.
  17. Вычисляется новый индекс конца подстроки с помощью maxLenInd + maxLen - 1.
  18. Выполняется цикл while maxLenInd < maxWordEnd do.
  19. Внутри цикла меняется местами символ с конца подстроки и символ с начала нового слова.
  20. Уменьшается значение maxLenInd и увеличивается значение maxWordEnd.

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

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