Программа нужна на С++, можно использовать контейнер (list), string нельзя.
Дано предложение. Напечатать все его слова, предварительно преобразовав каждое из них по следующему правилу:
а) заменить первую встреченную букву a на о;
б) удалить из слова все вхождения последней буквы (кроме нее самой);
Решение:
Проще всего перевести последовательность букв в шестиричную систему счисления. Тогда получим:
А ->0, Г -> 1, Д -> 2, E -> 3, П -> 4, Р ->5
Упорядоченную последовательность слов можно записать так:
1. ААА - 000
2. ААГ - 001
3. ААД - 002
N. ГАА - 100 -наше первое слово начинающееся на Г
Переведем число 100 из шестиричной системы счисления в десятичную и получим:
1 *6^2+0*6^1+0*6^0=36
Так как список слов начинается с 1, то надо 36 увеличить на единицу.
ответ: 37
Const
n=30;
type
tys=array[1..n] of string;
Var
ars:tys;
i,j:integer;
s:string;
procedure sorts(var ars:tys;n1:integer);
Var
i,j:integer;
c:string;
begin
for i:=1 to n1-1 do
for j:=i to n1 do
if ars[i]>ars[j] then
begin
c:=ars[i];
ars[i]:=ars[j];
ars[j]:=c;
end;
end;
begin
readln(s);
j:=1;
while pos(' ',s)<>0 do
begin
for i:=1 to pos(' ',s) do
ars[j]:=ars[j]+s[i];
delete(s,1,pos(' ',s));
inc(j);
end;
ars[j]:=s;
sorts(ars,j+1);
writeln('Result=');
for i:=1 to n do writeln(ars[i]);
end.
Пример ввода:
панамка пена пенал паста параллелепипед подражатель пинать явный полиморфизм приведение паскаль тетрадь разум
Пример вывода:
панамка параллелепипед паскаль паста пена пенал пинать подражатель полиморфизм приведение разумтетрадь явный