kotodrotin
15.11.2020 18:52

ИНФОРМАТИКА САБАҚ КӨМЕКТЕСІНДЕРШІ ӨТІНЕМІН ТЖБ


ИНФОРМАТИКА САБАҚ КӨМЕКТЕСІНДЕРШІ ӨТІНЕМІН ТЖБ

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Наташа1111111124
30.05.2020 09:19
Описание алгоритма: задан список А и число M, n = len(A). для того чтобы найти все возможные варианты выборки из А необходимо построить множество двоичных чисел от 1 до 2^n-1 и складывать только те индексы разряд которого которого в двоичном числе равен 1, т.е. для двоичного числа 1100 это будут индексы 2 и 3.
Если сумма будет равна М вывести последовательность индексов, иначе идем далее
Язык 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
0,0(0 оценок)
Ответ:
romab07
22.01.2021 11:40

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.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота