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