Получить предложение, в котором самое длинное слово записано наоборот - 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.