Преобразовать строку, изменив порядок следования слов на обратный.
Слова могут разделяться только пробелами. Их количество в строке результате не меняется, порядок следования символов в словах остаётся неизменным ( например, исходная строка acs dfr, результат dfr acs)
Для строк использовать только length, chr, ord.
Я хочу поступить так:
строку разбить на слова, идя с конца строки получить последнее слово (оно будет записано наоборот). после в полученном слове изменить порядок слов, результат - в конечную строку, так со всеми словами.
Начала реализовывать , программа не рабатает....
uses crt;
Function slovo ( const s : string; var i : byte) : string;
var
w : string;
begin
w := '';
while ( i <= length (s) ) and ( s[i] <> ' ' ) do
begin
w := w + s[i];
i := i+1;
end;
slovo := w;
end;
VAR
s, w, srez : string;
i, j : byte;
c : char;
BEGIN
clrscr;
srez := '';
writeln ( ' vvedite stroku simvolov' );
readln ( s );
for i := length ( s ) downto 1 do
begin
w := slovo ( s, i );
for i := 1 to length ( w ) div 2 do
begin
c := w[i];
w[i] := w[length (w) - i +1];
w[length (w) - i +1] := c;
end;
srez := srez + w + ' ';
end;
writeln ( ' rezylitat rabotu' );
writeln (srez);
readkey;
end.
function Convert(const s: String): String;
var
i, j, k: Integer;
res: String;
begin
i := Length(s);
res := '';
while (i > 0) do begin
j := i;
while (i > 0) and (s[i] <> ' ') do dec(i);
for k := i + 1 to j do res := res + s[k]; res := res + ' ';
dec(i);
end;
Convert := res;
end;
var
s: String;
begin
s := '1 2 3 4 5';
writeln(Convert(s));
end.
for k := i + 1 to j do
Потомучто в этот момент i либо равно 0, либо s[i] = пробел