Строки в Pascal

Строковый тип данных, процедуры и функции для работы со строками в Pascal. Массивы символов.

Комментарии

Продублировать буквы начала и конца алфавита А, Б, В, Э, Ю, Я: везде, где встречается буква А записать АА, везде, где Б – ББ и т.д.

Ответ на от Виктория

var
  s: string;
  j: integer;
  i1: integer := 0;
  blank_position: array [1..1000000] of integer;
  words: array [1..100000] of string;
  new_words: integer := 1;
  word_: string;
 
begin
  write('Текст: ');readln(s);
  s := Trim(s);
  for var i := 1 to s.Length do
    if (s[i] = ' ') then inc(i1);
  for var i := 1 to s.Length do
    if (s[i] = ' ') then begin inc(j);blank_position[j] := i; end;
  for var j1 := 1 to i1 do
  begin
    for var i := new_words to blank_position[j1] do
    begin
      if not (s[i] in ['.', ',', ' ', '!', '?', '"', ';', ':', '+', '=', '\', '|', '/', '«', '»', '`', '@', '#', '№', '$', '%', '^', '&', '*', '{', '}', '[', ']', '(', ')', '~', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']) then
        if not ((s[i] in ['-']) and ((s[i + 1] in [' ']) or (s[i - 1] in [' ']))) then words[j1] := words[j1] + s[i];
    end;
    new_words := blank_position[j1];
  end;
  for var i := new_words to s.Length do
  begin
    if not (s[i] in ['.', ',', ' ', '!', '?', '"', ';', ':', '+', '=', '\', '|', '/', '«', '»', '`', '@', '#', '№', '$', '%', '^', '&', '*', '{', '}', '[', ']', '(', ')', '~', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']) then
      if not ((s[i] in ['-']) and ((s[i + 1] in [' ']) or (s[i - 1] in [' ']))) then words[i1 + 1] := words[i1 + 1] + s[i];
  end;
  for var i := 1 to i1 + 1 do
  begin
    word_ := words[i];
    for var k := 1 to word_.Length do
    begin
      if not (word_[k] in ['е', 'о']) then (*) (*) else begin write(words[i], ' ');break; end;
    end;
  end;
end.
EMAIL: djslava0102@gmail.com