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