Решение, быть может и не тривиальное, но за ломать голову, как это сделать "по-школьному" мне не захотелось. Да и не требовалось по условию... даже язык программирования не был указан.
// PascalABC.NET 3.1, сборка 1256 от 21.06.2016 begin var s:=ReadlnString('>'); var m:=s.Matches('(\S+)').Select(x->(x.Index+1,x.Value.Length)); // получили последовательность элементов вида <позиция><длина>, // отражающих положение слов в строке. var n:=m.Count; // количество слов if n.IsEven then Dec(n); while n>0 do begin var e:=m.ElementAt(n-1); Delete(s,e.Item1,e.Item2); Dec(n,2) end; Writeln(s) end.
Тестовое решение > Карл у Клары украл кораллы Клара у Карла украла кларнет у украл Клара Карла кларнет
Первая задача:
var
i:integer;
a: array [1..7] of String;
begin
a[1]:='мама';
a[2]:='ель';
a[3]:='парта';
a[4]:='каникулы';
a[5]:='прыжок';
a[6]:='ура';
a[7]:='прикол';
for i:=1 to 7 do
writeln(a[i],' ', Length(a[i]));
end.
Вторая задача:
var
i, j, c:integer;
a:array [1..8] of integer;
begin
for i:=1 to 8 do
begin
writeln('Введите эл. массива A[', i, ']');
readln(a[i]);
end;
writeln();
for i:=1 to 8 do
write(a[i], ' ');
for i:=1 to 7 do
for j:=i+1 to 8 do
if a[i]>a[j] then
begin
c:=a[i];
a[i]:=a[j];
a[j]:=c;
end;
writeln();
for i:=1 to 8 do
write(a[i], ' ');
end.
// PascalABC.NET 3.1, сборка 1256 от 21.06.2016
begin
var s:=ReadlnString('>');
var m:=s.Matches('(\S+)').Select(x->(x.Index+1,x.Value.Length));
// получили последовательность элементов вида <позиция><длина>,
// отражающих положение слов в строке.
var n:=m.Count; // количество слов
if n.IsEven then Dec(n);
while n>0 do begin
var e:=m.ElementAt(n-1);
Delete(s,e.Item1,e.Item2);
Dec(n,2)
end;
Writeln(s)
end.
Тестовое решение
> Карл у Клары украл кораллы Клара у Карла украла кларнет
у украл Клара Карла кларнет