akrivoz
?>

Радиотелескоп пытается получать и анализировать сигналы из космоса. различные шумы переводятся в последовательность вещественных неотрицательных чисел, заданных с точностью до 1 знака после десятичной точки. при анализе этих данных потребовалось выбрать такое непустое подмножество сигналов (в него может войти как один сигнал, так и все), произведение значений которого будет максимальным. определите, какие сигналы войдут в это подмножество. на паскале напишите.

Информатика

Ответы

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

// PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=SeqRandom(ReadInteger('n='),0,99).Select(t->0.1*t).ToArray;
  a.Println.Where(t->t>=1.0).Println
end.

Пример
n= 15
1.3 2.8 0.7 5.1 1 0.9 7.9 5.5 3.4 3.6 9.1 2.7 2.5 9 7.9
1.3 2.8 5.1 1 7.9 5.5 3.4 3.6 9.1 2.7 2.5 9 7.9
alfaduk24908
Собственно, решение однострочное...

// PascalABC.NET 3.0, сборка 1150 от 22.01.2016
begin
  Writeln('Ср.арифм=',ArrRandom(30,0,1000).Println(', ').
      Where(x->Odd(x)).Average)
end.

Тестовое решение:
611, 443, 634, 637, 44, 297, 286, 431, 130, 767, 388, 513, 827, 681, 619, 810, 586, 697, 206, 823, 294, 238, 354, 138, 411, 141, 873, 864, 715, 564
Ср.арифм=592.875

И пояснение, как это работает, т.е. по сути алгоритм на русском языке.
ArrRandom(30,0,1000) создает массив из 30 элементов и заполняет его случайными значениями из диапазона [0,1000]. Далее этот массив обрабатывается методом Println, который направляет значения элементов на вывод, разделяя их запятой с последующим пробелом и в конце вывода добавляет смену строки. Затем элементы массива проходят фильтр Where(x->Odd(x)), который пропускает через себя только те значения, которые удовлетворяют условию Odd(значение элемента)=True, а мы знаем, что Odd() возвращает True для нечетного аргумента. Далее фильтр элементы обрабатываются методом Average, который умеет принимать набор значений и возвращать их среднее. И наконец, процедура Writeln выводит полученное значение, предваряя его текстовым пояснением.
innavinogradova1385
Чтобы прекратить ввод чисел в массив нужно ввести число "-1".
class ArrayMiddle{
 public static void main(String args[]){
  java.util.Scanner in = new java.util.Scanner(System.in); long eArray[] = new long[1];
  while((eArray[eArray.length-1] = in.nextLong())!=-1){
   long nArray[] = new long[eArray.length+1];
   for(int nCell = 0; nCell<eArray.length; nCell++)nArray[nCell]=eArray[nCell];
   eArray = nArray;
  } eArray[eArray.length-1] = 0;
  for(int cCell = 0; cCell<eArray.length-1; cCell++)eArray[eArray.length-1]+=eArray[cCell];
  System.out.print(eArray[eArray.length-1]/(double)(eArray.length-1));
 }
}

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

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

Радиотелескоп пытается получать и анализировать сигналы из космоса. различные шумы переводятся в последовательность вещественных неотрицательных чисел, заданных с точностью до 1 знака после десятичной точки. при анализе этих данных потребовалось выбрать такое непустое подмножество сигналов (в него может войти как один сигнал, так и все), произведение значений которого будет максимальным. определите, какие сигналы войдут в это подмножество. на паскале напишите.
Ваше имя (никнейм)*
Email*
Комментарий*

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

leobashkurov1089
mvolkov8
Максим
stailwomen31
Guskov
Алексеевна_Валентиновна
Andrei
KononovaMaiorov453
margusha1974
Aleksei806
gabramova
Tarakanova_pavel
vedaikin
Chistova-Dmitrii1162
ann328389