Другие языки программирования и технологии

Пожалуйста, будтье так добры, помочь решить задчаку в Паскале: Составьте программу, печатающую последнее слово в ...

Составьте программу, печатающую последнее слово в предложении в обратном порядке.
без dec можно.
а вот попроще нельзя. можно посложнее. вдруг после последнего слова еще пробелы есть? а вдруг строка только из пробелов состоит? если нужно, чтобы это учитывалось, то так:

Var s:string; i:integer;
Begin
Readln(s); i:=length(s);
while (i>0) and (s [ i]=' ') do i:=i-1;
if i=0 then Writeln('слова в строке не обнаружены')
else repeat Write(s[ i]); i:=i-1 until (i=0) or (s[ i]=' ');
End.

А Александра не слушайте. Его поправка с ошибкой.
Anartaev !!!
Anartaev !!!
1 631
Лучший ответ
var s:string; i:integer;
begin
readln(s); i:=length(s);
repeat write(s[ i]); dec(i); until (i=0)or(s[ i]=' ');
writeln; readln
end.
подправлю Krab Bark'а
repeat write( s[ i ] ); dec(i); until (i <> 0) or (s[ i]=' ');
это же элементарней некуда. Измеряете длинну строки, делаете цикл с обратным шагом с условием до первого пробела или другого не буквенного символа и записываете данные в новую строку, число на котором цикл остановился используется для следующего цикла в прямом порядке начиная с него и заканчивая числом длинны строки переписываете со 2 строки в первую. Далее выводите на дисплей и все. В итоге у вас выводится все предложение с последним словом записанном наоборот.
dec можно заменить на i:=i-1; а or это "или" можно удалить, но тогда программа будет ужасной, можно правда циклом for заменить
var s:string; i:integer;
begin
readln(s); i:=length(s);
for i:= length(s) downto 0 do begin
if (s[ i]=' ') then break; //или не break, может быть exit либо еще что-то
write(s[ i]);
dec(i); // либо i:=i-1;
end;
writeln; readln
end.