Предмет: Информатика,
автор: omo24
C клавиатуры вводится произвольная строка символов. Группы символов, разделенные пробелами и не имеющие пробелов внутри, будем называть словами. Написать программу, которая удаляет все слова с нечетными номерами. Вывести полученную строку на экран. Длина строки не более 100 символов.
Ответы
Автор ответа:
0
Решение, быть может и не тривиальное, но за 5 баллов ломать голову, как это сделать "по-школьному" мне не захотелось. Да и не требовалось по условию... даже язык программирования не был указан.
// 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.
Тестовое решение
> Карл у Клары украл кораллы Клара у Карла украла кларнет
у украл Клара Карла кларнет
// 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.
Тестовое решение
> Карл у Клары украл кораллы Клара у Карла украла кларнет
у украл Клара Карла кларнет
Автор ответа:
0
//Скучное, школьное
//Pascal ABC.NET 3.1 сборка 1219
Var
s:string;
i:integer;
begin
readln(s);
s:=s.Trim;
i:=1;
while i<=length(s)-1 do
if (s[i]=' ') and (s[i+1]=' ') then delete(s,i,1) else inc(i);
var ars:=s.Split;
s:='';
i:=1;
while i<=ars.length-1 do
begin
s:=s+ars[i]+' ';
i:=i+2;
end;
writeln(s);
end.
Пример ввода:
С понедельника точно начну писать документацию. Вот пока немного годноты.
Пример вывода:
понедельника начну документацию. пока годноты.
//Pascal ABC.NET 3.1 сборка 1219
Var
s:string;
i:integer;
begin
readln(s);
s:=s.Trim;
i:=1;
while i<=length(s)-1 do
if (s[i]=' ') and (s[i+1]=' ') then delete(s,i,1) else inc(i);
var ars:=s.Split;
s:='';
i:=1;
while i<=ars.length-1 do
begin
s:=s+ars[i]+' ';
i:=i+2;
end;
writeln(s);
end.
Пример ввода:
С понедельника точно начну писать документацию. Вот пока немного годноты.
Пример вывода:
понедельника начну документацию. пока годноты.
Похожие вопросы
Предмет: Математика,
автор: ruslanale200
Предмет: Математика,
автор: dashacherednichenko8
Предмет: Алгебра,
автор: ornap28
Предмет: Химия,
автор: anutabelze