Дан целочисленный массив из 100 элементов. Элементы массива могут принимать неотрицательные целые значения до 10000 включительно. Необходимо найти количество элементов массива, в десятичной записи которых содержатся ровно две шестёрки, а затем заменить элементы, которые в шестнадцатеричной записи оканчиваются на A, на число, равное найденному значению. Гарантируется, что такие элементы в массиве есть. В качестве результата необходимо вывести изменённый массив в обратном порядке, каждый элемент выводится с новой строчки.
Например, для исходного массива из шести элементов:
170 6 666 6126 26 66
программа должна вывести следующий массив
66 2 6126 2 6 2
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Паскаль:
const N = 100;
var a: array [1..N] of longint;
i, k, x, b: longint;
begin
for i := 1 to N do
readln(a[i]);
...
Объяснение:
procedure F(n: integer);
begin
if n>0 then begin
Write (n);
F(n-2);
F(n div 4);
end
end;
begin
F(9);
end.
На выходе будет 97531112
Если нужна трассировка, её можно сделать примерно так:
procedure F(n: integer);
begin
Writeln('Вход');
if n>0 then begin
Writeln ('В выходную строку: ',n);
Writeln('Вызов F(n-2)');
F(n-2);
Writeln('Вызов F(n div 4)');
F(n div 4);
end;
Writeln('Выход')
end;
begin
F(9);
end.
Результат трассировки:
Вход
В выходную строку: 9
Вызов F(n-2)
Вход
В выходную строку: 7
Вызов F(n-2)
Вход
В выходную строку: 5
Вызов F(n-2)
Вход
В выходную строку: 3
Вызов F(n-2)
Вход
В выходную строку: 1
Вызов F(n-2)
Вход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Вызов F(n div 4)
Вход
В выходную строку: 1
Вызов F(n-2)
Вход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Выход
Вызов F(n div 4)
Вход
В выходную строку: 1
Вызов F(n-2)
Вход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Выход
Вызов F(n div 4)
Вход
В выходную строку: 2
Вызов F(n-2)
Вход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Выход
оператор присваивания :=
оператор ввода read(x1,x2,...,xn) или readln(x1,x2,...,xn)
оператор вывода write(x1,x2,...,xn) или writeln(x1,x2,...,xn)
условный оператор if условие then оператор 1 else оператор 2
оператор варианта case управляющая переменная of
набор значений1: оператор1;
набор значений2: оператор2;
...
набор значенийn: операторN
else
альтернативный оператор
end;
оператор цикла с предусловиями while ... do
оператор цикла с постусловием repeat ... until
оператор цикла for ... do
оператор break осуществляет немедленный выход из циклов repeat, while, for.
оператор continue начинает новую итерацию цикла, даже если предыдущая не была завершина.
оператор exit осуществляет выход из подпрограммы.
оператор halt прекращает выполнение программы и возвращает код завершения в операционную систему.