На паскале или на любом языке 9. Создать и продемонстрировать работу процедуры copy(Т, Т1), которая строит Т1 - копию дерева Т.
19.Пусть в дереве-формуле (см. упр.12) в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных. Создать и про-демонстрировать работу программы, которая строит дерево-формулу Т1 - производную дерева-формулы Т по переменной, однобуквенное имя которой является значением литерного параметра v.
21. Предложить и описать представление в виде двоичного дерева для формул из упр.12, в которых в качестве терминалов используются любые неот-рицательные целые числа. Создать и продемонстрировать работу программы, которая по формуле из текстового файла f строит соответствующее дерево-формулу Т.
"1 * 4 + 1 + 1 + 1 + 1 * 4 = 32"
"1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 * 4 = 32"
"1 * 4 + 1 + 1 + 1 * 4 + 1 + 1 + 1 + 1 = 32"
"1 + 1 + 1 + 1 + 1 + 1 + 1 * 4 + 1 + 1 + 1 + 1 = 32"
"1 * 4 + 1 + 1 * 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
"1 + 1 + 1 + 1 + 1 + 1 * 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
"1 * 4 + 1 * 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
"1 + 1 + 1 + 1 + 1 * 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
"1 * 4 * 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
"1 + 1 + 1 + 1 * 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
"1 + 1 + 1 * 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
"1 + 1 * 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
"1 * 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
"1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 32"
15 всего
n, k, i, imax, j: integer;
a: array[1..100]of integer;
begin
randomize;
n := random(30) + 10;
for i := 1 to n do
begin
a[i] := Random(30);
write(a[i], ' ');
end;
writeln();
{сортировочка}
for i := 1 to n - 1 do
begin
imax := i;
for j := i + 1 to n do
if a[j] > a[imax] then
imax := j;
k := a[i];
a[i] := a[imax];
a[imax] := k;
end;
for i := 1 to n do
write(a[i], ' ');
k := 0;
for i := 2 to n - 1 do
if (a[i] <> a[i - 1]) and (a[i] <> a[i + 1]) then
k := k + 1;
if a[1] <> a[2] then k := k + 1;
if a[n] <> a[n - 1] then k := k + 1;
writeln();
writeln('No doubles - ', k);
end.