Напечатать строку, в которой оставлены первые и последние вхождение латинских букв для каждого слова - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите или подскажите как такую задачу написать : "Напечатать строку, в которой оставлены первые и последние вхождение латинских букв для каждого слова." Как написать первое вхождение я понимаю. Как написать последние вхождение, а потом "склеить" их? Зарание спасибо!

Решение задачи: «Напечатать строку, в которой оставлены первые и последние вхождение латинских букв для каждого слова»

textual
Листинг программы
var
  sI, sO: string; 
  ch: char;
 
procedure m2del(var zz: string; delCh: char);
var
  y: integer;
  nPos, lPos: integer;
begin
  y := 1;
  nPos := 0;lPos := nPos; 
  while y <= length(zz) do
  begin
    if (ord(zz[y]) = ord(delCh)) or ((ord(zz[y]) > 96 ) and ((ord(zz[y]) - 32 = ord(delCh)))) then
    begin
      if nPos > 0 then 
      begin
        delete(zz, lPos, 1);
        lPos := y - 1;
      end
      else
      begin
        nPos := lPos;lPos := y;
      end;        
    end;
    inc(y);
  end;
end;
 
begin
  sI := readstring('Enter string:');
  sO := sI;
  for ch := 'A' to 'Z' do    
    m2del(sO, ch);
  writeln('Result: ', sO);
end.

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

  1. В начале объявляются переменные sI, sO и ch типа string, char соответственно.
  2. Затем объявляется процедура m2del, которая принимает два параметра: zz (строка) и delCh (символ).
  3. Внутри процедуры объявляются три переменные: y, nPos и lPos типа integer.
  4. Затем идет условие, которое проверяет каждый символ в строке zz на равенство символу delCh или на то, что ord(zz[y]) > 96 и ord(zz[y]) - 32 = ord(delCh).
  5. Если условие выполняется, то проверяется, была ли предыдущая позиция (nPos) больше 0. Если да, то удаляется символ в позиции lPos. Если нет, то nPos и lPos устанавливаются равными y.
  6. После этого увеличивается значение y и цикл повторяется до тех пор, пока y не станет равным длине строки zz.
  7. В конце процедуры переменная sO присваивается значению переменной sI.
  8. Затем идет блок begin-end, в котором считывается строка от пользователя и присваивается переменной sI.
  9. Далее идет цикл for, в котором для каждого символа от 'A' до 'Z' вызывается процедура m2del для строки sO и этого символа.
  10. В конце выводится результат на экран.

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

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