Вывести слова строки в обратном порядке
Задача
Вводится строка слов. Вывести слова в обратном порядке.
Решение
Описание переменных:
- str - строка;
- len - длина строки;
- a - длина очередного слова;
- i - текущая позиция в строке.
Алгоритм решения задачи:
Будем перебирать символы строки с конца и измерять количество подряд идущих непробельных символов. Если очередной символ - пробел, следует вывести на экран отрезок строки от предыдущего с конца символа (i + 1
) на длину подряд идущих непробельных символов. Это делается с помощью функции copy. После того как слово будет выведено, надо обнулить фиксируемую длину слова (a = 0
.
Поскольку вывод слова "срабатывает", только когда встречается пробел, то первое слово строки (последнее из найденных при поиске с конца) выведено не будет, если перед ним нет пробела. Поэтому в программе за циклом предусмотрен отдельный вывод последней найденной подстроки.
Программа на языке Паскаль:
var str: string; len, i, a: byte; begin readln(str); len := length(str); a := 0; for i:=len downto 1 do begin if str[i] = ' ' then begin write(copy(str, i+1, a), ' '); a := 0; end else a := a + 1; end; write(copy(str, i, a)); writeln; end.
Пример работы программы:
one two three three two one