1. пропала ; после writeln('Цифра')
2. меньше или равно пишется <=, так что условие n=<300 надо переписать n<=300
3. после sum:=n+sum; пропала закрывающая скобка end
4. после else надо бы еще begin
5. предпоследняя строчка тоже мимо.
Вот вся исправленная прога:
program one;
var a,n,sum,b:integer;
sred:real;
begin
readln(n);
writeln('Цифра');
while (n<>0) do
begin
sred:=0;
sum:=0;
b:=0;
if(n mod 8 =0 )and (n<=300) then
begin
sum:=n+sum;
end
else
begin
writeln('NO');
end;
readln(n);
if b>100 then
writeln('NO')
end;
sred:=sum/b;
writeln('Среднее арихметическое равно ',':=',sred);
end.
Если сумма будет равна М вывести последовательность индексов, иначе идем далее
Язык Python
A=[21,4,5,4,32] #Задание массива А
M = 9 #Задание М
for i in range(1, 2**len(A)-1): # для всех i от 1 до 2^n-1
ind = [] # список индексов используемых в данной итерации
cnt = 0 # сумма элементов А
for j in range(len(A)): # для всех j от 0 до n
if i&2**j: # Если индекс есть в бинарной записи i, то
cnt += A[j] # прибавить к сумме A[j]
ind.append(str(j)) # запомнить индекс
if cnt > M: break # если сумма больше M выходим из цикла
if cnt == M: # если сумма равна M
print ', '.join(ind) # печатаем список эффективных индексов
для данной программы будет выдано две строки
1,2
2,3