Составить программу, которая выводит на экран все символы, расположенные после первого символа «'» - Pascal
Формулировка задачи:
2) С клавиатуры вводится строка. Составить программу, которая выводит на экран все символы, расположенные после первого символа «'», подсчитывает кол-во предложений, содержащих нечетное кол-во слов; удаляет из текста все слова, которые расположены после ком.
Актуально
hls help
Поправка, расположенные после первого символа «:»
Решение задачи: «Составить программу, которая выводит на экран все символы, расположенные после первого символа «'»»
textual
Листинг программы
type TChars = set of Char; function StrSpn(const s: String; const c: TChars; var i: Integer): Boolean; begin while (i<=Length(s)) and (s[i] in c) do Inc(i); StrSpn:=i>Length(s); end; function StrCSpn(const s: String; const c: TChars; var i: Integer): Boolean; begin while (i<=Length(s)) and not (s[i] in c) do Inc(i); StrCSpn:=i>Length(s); end; const Blank = [#9,' ']; Punct = ['!'..'/',':'..'@','['..'`','{'..'~']; EOSnt = ['.','!','?']; function GetWord(const s: String; var i: Integer): String; var j: Integer; begin StrSpn(s,Blank,i); j:=i; StrCSpn(s,Blank+Punct,i); GetWord:=Copy(s,j,i-j); end; procedure Task1(const s: String); var p: Integer; begin p:=Pos(':',s); Write('1. Текст после ":": '); if p>0 then WriteLn('"',Copy(s,p+1,Length(s)),'"') else WriteLn('<нет>'); end; procedure Task2(const s: String); var i, j, n, w: Integer; begin i:=1; n:=0; repeat w:=0; repeat if Length(GetWord(s,i))>0 then Inc(w); if StrSpn(s,Blank+Punct-EOSnt,i) then Break; if s[i] in EOSnt then begin Inc(i); Break; end; until False; if Odd(w) then Inc(n); until i>Length(s); WriteLn('2. Предложений с нечетным количеством слов: ',n); end; procedure Task3(s: String); var i, j, k: Integer; begin for j:=Length(s) downto 1 do if s[j]=',' then begin i:=j+1; k:=Length(GetWord(s,i)); Delete(s,i-k,k); end; WriteLn('3. Без слов после ",": ',s); end; var s: String; begin Write('Введите предложения: '); ReadLn(s); Task1(s); Task2(s); Task3(s); Write('Нажмите Enter...'); ReadLn; end.
Объяснение кода листинга программы
- Функция StrSpn принимает строку, набор символов и переменную i. Она проверяет каждый символ в строке, начиная с i, и увеличивает i, если символ присутствует в наборе символов. Функция возвращает true, если i больше длины строки, и false в противном случае.
- Функция StrCSpn работает аналогично функции StrSpn, но проверяет отсутствие заданного символа в строке.
- Функция GetWord принимает строку, набор символов и переменную i. Она использует функцию StrSpn для определения позиции первого символа в строке, а затем использует функцию StrCSpn для определения позиции последнего символа в строке. Функция возвращает слово между этими позициями.
- В процедуре Task1 мы ищем позицию двоеточия в строке и выводим текст после двоеточия. Если позиция найдена, мы выводим текст до нее в кавычках.
- В процедуре Task2 мы используем цикл для подсчета количества слов в предложении. Мы начинаем с 1 и увеличиваем счетчик на 1 каждый раз, когда находим слово. Если количество слов нечетное, мы выводим это значение.
- В процедуре Task3 мы используем цикл для удаления всех слов после запятой из строки. Мы начинаем с конца строки и удаляем каждое слово, которое состоит из одной запятой.
- В конце программы мы запрашиваем у пользователя ввести предложение, а затем выполняем три задачи, выводя результаты на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д