Получить предложение, в котором самое длинное слово записано наоборот - 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.
Объяснение кода листинга программы
- Создаются переменные
str
,substr
,maxWord
типаstring
,i
,maxLen
,maxLenInd
,maxWordEnd
типаinteger
. - В функции
inWord(ch: char)
проверяется, является ли символch
заглавной буквой. Если это так, функция возвращаетtrue
, иначе -false
. - В основной части кода пользователю предлагается ввести предложение.
- Переменная
substr
инициализируется пустой строкой. - Переменная
maxLen
инициализируется нулем. - Переменная
maxLenInd
инициализируется нулем. - Если длина предложения больше нуля, то происходит цикл
for i := 1 to length(str)
. - Внутри цикла проверяется, является ли текущий символ заглавной буквой с помощью функции
inWord(str[i])
. - Если символ является заглавной буквой, то к переменной
substr
добавляется текущий символ. - Если длина подстроки больше текущей максимальной длины, то обновляются значения максимальной длины и ее индекса.
- После завершения цикла подстрока заменяет текущее слово в предложении.
- Заменяется последний символ подстроки на первый символ нового слова.
- Заменяется последний символ подстроки на второй символ нового слова.
- И так далее, пока не будет заменено все символы подстроки.
- После замены символов подстроки на символы нового слова, выводится новое предложение.
- Вычисляется новый индекс конца подстроки с помощью
maxLenInd
. - Вычисляется новый индекс конца подстроки с помощью
maxLenInd + maxLen - 1
. - Выполняется цикл
while maxLenInd < maxWordEnd do
. - Внутри цикла меняется местами символ с конца подстроки и символ с начала нового слова.
- Уменьшается значение
maxLenInd
и увеличивается значениеmaxWordEnd
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д