Ю 4.4

Условие

Вычислить среднее значение [latex]m(x)[/latex] и дисперсию[latex]d(x)[/latex] для заданного массива [latex]X(i)[latex] наблюдений.

Решение

Среднее значение выборки или математическое ожидание можно вычислить по формуле: [latex]M(X)=\frac{1}{n}\sum_{i=1} x_{i}[/latex]

Дисперсию: [latex]D(x) = \frac{1}{n}\sum_{i=1}x_{i}^{2} — M(X)^{2}[/latex]

 

Ссылка на  TryHaxe!

Тесты

X(k) X D
 [2,2,2,1,4,5] 2.67 6.33
 [1,2,3,10,4,10]   5 3.33
 [1]   1   0

ML 36. Движение катера

Условие

Катер движется по течению реки из пункта в A в пункт B и обратно с собственной скоростью [latex]v[/latex] км/час. Скорость течения постоянна — [latex]u[/latex]  км/час. Расстояние между пунктами составляет [latex]s[/latex]  км. Для любых неотрицательных действительных значений расстояния и скоростей вычислите время в пути.

Входные данные

Физические величины: [latex]v[/latex] , [latex]v[/latex] , [latex]v[/latex]

Выходные данные

Физическая величина [latex]t[/latex]

Решение

По условию, мы проверяем любые неотрицательные действительные значения, следовательно условие, что [latex]t[/latex] не может быть меньше нуля не выполняется только если скорость течения будет превышать скорость катера (т.е. он не сможет плыть против него).  При нарушении этого условия или при получении 0 в знаменателе будем выводить -1.
Время в пути можно найти по формуле: [latex]t=\frac{s}{v}[/latex]

Так как к нашему условие добавляется влияние течения, то  скорость по его направлению будет

[latex]v+u[/latex], а против — [latex]v-u[/latex]. Следовательно получаем формулу для нахождения времени, необходимого на преодоление пути от А до В и обратно:

[latex]t=\frac{s}{(v+u)} + \frac{s}{(v-u)}[/latex]

На TryHaxe!

Тесты

s v u t
  6   1   2   -1
  6   2   1   8
  60   12   4   11.25

Объем тетраэдра

Найти объём тетраэдра три стороны которого образованы векторами [latex]\overrightarrow{a}=(x_{a},y_{a},z_{a})[/latex], [latex]\overrightarrow{b}=(x_{b},y_{b},z_{b})[/latex], [latex]\overrightarrow{c}=(x_{c},y_{c},z_{c})[/latex]

Входные данные

Координаты векторов $a$, $b$, $c$.

Выходные данные

Объём тетраэдра.

Решение

Объем тетраэдра вычисляется по формуле: [latex]V=\frac{1}{6}\left | \vec{a},\vec{b},\vec{c} \right |[/latex], где внутри модуля стоит смешанное произведение векторов.

Try Haxe!

Тесты

Входящие данные Результат
a b c V
7,10,12 11,20,9 5,12,10 110
3,6,3 1,3,-2 2,2,2 3
0,0,0 1,3,-2 2,2,2 0

e-olymp 915. Прямоугольный или нет?

Условие задачи

Задано длины сторон треугольника. Определить, является ли этот треугольник прямоугольным.

Ссылка на задачу на e-olimp.

Входные данные

В единственной строке задано 3 натуральных числа — длины сторон треугольника. Длины сторон не превышают 1000.

Выходные данные

Вывести «YES» (без кавычек), если треугольник прямоугольный, или «NO» (без кавычек) в противном случае.

Решение

Для проверки вида треугольника использовалась формула из теоремы Пифагора : $$a^2+b^2=c^2,$$ где — $a$ и $b$ — катеты, $c$ — гипотенуза.

Тесты

Входящие данные Результат
5, 4, 40 NO
6, 10, 2 NO
5, 4, 3 YES
3, 4, 5 YES

Пример на TryHaxe.

4.3. Методы

Ссылка на оригинальную статью.

Метод — это функция или процедура, принадлежащая какому-то классу или объекту, которая определяет поведение программы, содержащимися в  ней выражениями. Методы можно встретить в любом примере программы, даже в простом Hello World!  используется метод main.

Вот некоторые характеристики методов:

  1. Имя метода (в примере: main)
  2. Список аргументов (в примере: () )
  3. Возвращаемый тип(в примере: void )
  4. Может иметь модификации для доступа(в примере:  static и public)
  5. Может иметь выражение внутри (в примере:  {trace(«Hello World»).

Рассмотрим данный пример.

 

В данном примере есть метод toString() и конструктор, кроме main.  

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

Тип возвращаемого значения записывается после его объявления через двойные скобки. В нашем случае метод возвращает значение типа String.

У нас все методы классов Franction публичные, что значит, мы можем обращаться к ним из класса Test.

Методы и поля могут переопределены для наследников базового класса. Использование переопределения в классе подразумевает, что у него есть родительский класс. Добавим в наш пример еще один класс  — наследник  Decimal и переопределим метод базового класса toString().

Переменная d явно определена как  Fraction  и во время компиляции «узнается» как  переменная этого класса, но во время выполнения все равно находится правильный метод toString()  в классе Decimal .

Наследник может обратиться к методам родителя, которые он переопределяет с помощью вызова super.methodName(). Это используется, например, в конструкторе наследника.

Ссылка на пример на TryHaxe!