kuhonka2021
?>

Составить программу в паскалеконцентрация газа в капсуле с каждой секундой повышается и изменяется по формуле k=0, 4t^2-1, 1t+2, 2, где к - концентрация газа, t-времясоздать программу, в которой 1. вычислить и вывести на экран все значения с 1 по 20 секунду (с шагом 1 секунда) 2. вывести на экран красным цветом значения концентрации газа меньше 20 единиц3. вычислить, сколько секунд концентрация газа была более 55 единиц. 4. внести изменения в программу - шаг значений времени вводится с клавиатуры ​

Информатика

Ответы

vadim330

Пусть сумма всех элементов равна full_sum, а длина массива 2k.

Предлагаю организовать банальный перебор: выберем k индексов из 2k, посчитаем сумму соответствующих элементов. Будем искать максимальную сумму, которая не превосходит full_sum/2. При этом сумма невыбранных элементов будет не меньше full_sum/2, и будет отличаться от суммы выбранных элементов на минимально возможную величину.

Этот алгоритм работает быстро только для относительно небольших значений k. если нужно что-то быстрее, то придется придумывать что-то дополнительно.

Код (Python 3):

from random import randint

from itertools import combinations

k = 10

a = [randint(1, 100) for _ in range(2 * k)]

print(*a)

full_sum = sum(a)

half_sum = full_sum // 2

max_sum = -1

answer = None

for seq in combinations(range(2 * k), k):

   s = sum(map(lambda ind: a[ind], seq))

   if s <= half_sum and s > max_sum:

       max_sum, answer = s, seq

   if s == half_sum:  

       break

left = [a[i] for i in answer]

right = [el for i, el in enumerate(a) if i not in answer]

a = left + right

print(*a)

Пример вывода:

50 39 19 63 16 4 82 45 63 33 6 57 39 16 38 4 66 56 87 84

50 39 19 63 16 4 82 57 16 87 45 63 33 6 39 38 4 66 56 84

kap393

1.

program raf105;

var a: integer;

begin

write('введите число: ');

readln(a);

if a< 0

  then writeln('число отрицательное')

  else writeln('число положительное');

end.

2.

program raf105;

var a,b,c: integer;

begin

write('введите 3 числа: ');

readln(a,b,c);

if (a> b) and (a> c)

  then writeln('большее ',a);

if (b> a) and (b> c)

  then writeln('большее ',b);

if (c> b) and (c> a)

  then writeln('большее ',c);

end.

язык программирования pascalabc

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Составить программу в паскалеконцентрация газа в капсуле с каждой секундой повышается и изменяется по формуле k=0, 4t^2-1, 1t+2, 2, где к - концентрация газа, t-времясоздать программу, в которой 1. вычислить и вывести на экран все значения с 1 по 20 секунду (с шагом 1 секунда) 2. вывести на экран красным цветом значения концентрации газа меньше 20 единиц3. вычислить, сколько секунд концентрация газа была более 55 единиц. 4. внести изменения в программу - шаг значений времени вводится с клавиатуры ​
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

office46
Екатерина1979
vorobyeva6428
fixer2006
generallor3
Morozova-Starikov
ЕВ1873
vipppp19743355
Alekseevna
elbabitch2014
osnovnoisklad3551
fakelel
arutchevben64
alexeylipatov
Pashinov