Составить программу, которая выводит на экран все символы, расположенные после первого символа «'» - 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.

Объяснение кода листинга программы

  1. Функция StrSpn принимает строку, набор символов и переменную i. Она проверяет каждый символ в строке, начиная с i, и увеличивает i, если символ присутствует в наборе символов. Функция возвращает true, если i больше длины строки, и false в противном случае.
  2. Функция StrCSpn работает аналогично функции StrSpn, но проверяет отсутствие заданного символа в строке.
  3. Функция GetWord принимает строку, набор символов и переменную i. Она использует функцию StrSpn для определения позиции первого символа в строке, а затем использует функцию StrCSpn для определения позиции последнего символа в строке. Функция возвращает слово между этими позициями.
  4. В процедуре Task1 мы ищем позицию двоеточия в строке и выводим текст после двоеточия. Если позиция найдена, мы выводим текст до нее в кавычках.
  5. В процедуре Task2 мы используем цикл для подсчета количества слов в предложении. Мы начинаем с 1 и увеличиваем счетчик на 1 каждый раз, когда находим слово. Если количество слов нечетное, мы выводим это значение.
  6. В процедуре Task3 мы используем цикл для удаления всех слов после запятой из строки. Мы начинаем с конца строки и удаляем каждое слово, которое состоит из одной запятой.
  7. В конце программы мы запрашиваем у пользователя ввести предложение, а затем выполняем три задачи, выводя результаты на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы