Перевод каретки на новую строку - Free Pascal
Формулировка задачи:
Решаю задачу на тимусе №1601. Все работает, как нужно, но есть проблемы с переводом каретки на новую строку ("Входные данные содержат сообщение Анжелы, которое состоит из латинских букв в верхнем регистре, пробелов,
переводов строк
и знаков препинания"). Если использовать символов перевода каретки (получаем из таблицы ASCII), то почему-то оператор вывода write выводит только ту часть строки, которая находится до перевода каретки. Например, есть строка: "HI THERE! HOW DID YOU KNOW I AM A BLONDE?". результат: "Hi there!". Прошу вашей помощиРешение задачи: «Перевод каретки на новую строку»
textual
Листинг программы
Var S : String; Flag : Boolean; i : Integer; Begin Flag:=False; S:='HI THERE! HOW DID YOU KNOW I AM A BLONDE?'; For i:=1 to Length(S) do If S[i] in ['.','!','?'] then Begin Flag:=False; Continue; end else If S[i] in ['A'..'Z'] then If Flag then S[i]:=LowCase(S[i]) else Flag:=True; Writeln(S); end.
Объяснение кода листинга программы
- Объявлены три переменные: S (строка), Flag (логическое значение), i (целое значение).
- Значение переменной Flag установлено в False.
- Значение переменной S установлено в строку
HI THERE! HOW DID YOU KNOW I AM A BLONDE?
. - Запускается цикл, который будет выполняться для каждого символа в строке S.
- Если текущий символ является одним из знаков пунктуации ('.', '!', '?'), то значение переменной Flag сбрасывается в False и выполнение цикла продолжается.
- Если текущий символ является буквой от 'A' до 'Z' (включительно), то проверяется значение переменной Flag.
- Если Flag равно True, то значение текущего символа приводится к нижнему регистру и переменная Flag сбрасывается в False.
- Если Flag равно False, то переменная Flag остается равной False.
- После выполнения цикла, значение переменной S выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д