Удаление последнего слова в строке
Задача
Требуется в произвольной строке удалить последнее слово, т.е. все символы после последнего пробела в строке.
Решение
Описание переменных:
s – строка;
len – ее длина.
Алгоритм решения задачи:
- Посимвольно просматриваем строку, начиная с конца.
- Как только встретится пробел, удаляем все символы от текущей позиции до конца строки и прерываем выполнение цикла.
Программа на языке Паскаль:
var s: string; len,i: byte; begin write('String: '); readln(s); len := length(s); for i:=len downto 1 do if s[i]=' ' then begin delete(s,i,len-i+1); break; end; writeln(s); readln end.
Примечания:
Если не использовать инструкцию break, то цикл продолжит выполняться и постепенно удалит все слова из строки за исключением первого.
Выражение len-i+1 дает в результате длину удаляемой части. Например, если длина строки равна 10, просматривается 7-й символ, и он оказывается пробелом, то приведенное выше выражение вернет 4. Будет удалена подстрока из 4-х символов, начиная с 7-го.