Да, это должно решаться одной программой.
const n=15;
var
a: array[1..n] of integer;
k,k2: integer;
i: byte;
begin
randomize;
k:=0;
writeln ('Исходный массив:');
for i:=1 to n do begin
a[i]:=random(10);
write (a[i]:3);
if a[i]=8 then begin k:=k+1; a[i]:=0; end;
end;
writeln;
if k=0 then writeln ('Нет элементов, равных 8')
else writeln ('Количество элементов, равных 8: ',k);
k2:=0;
writeln;
writeln ('Измененный массив:');
for i:=1 to n do begin
write (a[i]:3);
if a[i]=0 then k2:=k2+1;
end;
writeln;
if k2=0 then writeln ('Нет элементов, равных 0')
else writeln ('Количество элементов, равных 0: ',k);
a[n]:=k*8;
writeln ('Сумма первоначальных восьмерок и нулей = ',a[n]);
writeln ('Количество восьмерок (изначальных) и нулей = ',k+k2);
end.
------------------------------------
Результат:
Исходный массив:
5 8 2 2 3 7 2 8 3 3 4 2 3 2 5
Количество элементов, равных 8: 2
Измененный массив:
5 0 2 2 3 7 2 0 3 3 4 2 3 2 5
Количество элементов, равных 0: 2
Сумма первоначальных восьмерок и нулей = 16
Количество восьмерок (изначальных) и нулей = 4