Задача по информатике. Язык программирования - Паскаль. Задача: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулем. Найти максимальное из введенных четных чисел.
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.
1. Очевидно в формулировке задания пропущена еше одна буква - Е Решение: Проще всего перевести последовательность букв в шестиричную систему счисления. Тогда получим: А ->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.
Пример ввода:
панамка пена пенал паста параллелепипед подражатель пинать явный полиморфизм приведение паскаль тетрадь разум
Пример вывода:
панамка параллелепипед паскаль паста пена пенал пинать подражатель полиморфизм приведение разумтетрадь явный
Решение:
Проще всего перевести последовательность букв в шестиричную систему счисления. Тогда получим:
А ->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