алгоритм решения 2й задачи:
1. Разбить предложения в массив строк по словам.
2. идем циклом по полученному массиву и собираем предложение обратно по условиям: если индекс нечетный - пропускаем, если четный - добавляем, переворачивая.
3. Переворот - работаем со строкой, как с массивом, идем от конца к началу и добавляем результат.
Код:
// переворачивает строку
function ReverseStr(AStr : String) : String;
var
I : Integer;
begin
Result := '';
For I := Length(AStr) DownTo 1 Do Result := Result + AStr[i];
end;
// обрабатываем фразу
function ProcessPhrase(APhrase : String) : String;
var
I : Integer;
A : Array Of String;
begin
// разбиваем предложение на слова в массив
SetLength(A,0);
While Pos(' ',APhrase) > 0 Do
begin
SetLength(A,Length(A)+1);
A[High(A)] := Copy(APhrase,1,Pos(' ',APhrase) - 1);
APhrase := Copy(APhrase,Pos(' ',APhrase)+1,Length(APhrase) - Pos(' ',APhrase) + 1);
end;
If APhrase <> '' Then
begin
SetLength(A,Length(A)+1);
A[High(A)] := APhrase;
end;
// Выводим по условиям
// Дин. массив A имеет начало с 0!!!
Result := '';
For I := Low(A) To High(A) Do
If ((I+1) mod 2) = 0 Then
Result := Result + ReverseStr(A[i]) + ' ';
// Подчищает пробел в хвосте
Result := Trim(Result);
end;
Использование:
Код:
procedure TForm1.Button1Click(Sender : TObject)
begin
Edit2.Text := ProcessPhrase(Edit1.Text);
end;