Public static double CosineBetweenVectors(double[] a, double[] b) { if (a.Length != b.Length || a.Length == 0) throw new Exception("не верные параметры");
double ab = 0; double a_length = 0; double b_length = 0; for (var i = 0; i < a.Length; i++) { ab += a[i] * b[i]; a_length = a[i] * a[i]; b_length = b[i] * b[i]; }
if (a_length * b_length == 0) throw new Exception("Нулевые вектора");
return ab / Math.Sqrt(a_length) / Math.Sqrt(b_length); }
Sub maxZn()'заполнение массива Dim mas(20) S = "" Randomize For i = 1 To 20 mas(i) = Round(Rnd(100) * 100) S = S + Str(mas(i)) + "," Next i'поиск максимального числа и количества его повторений qty = 1 max = mas(1) 'предполагаем, что максимальное число в первом элементе массива For i = 2 To 20 If mas(i) = max Then qty = qty + 1 End If If mas(i) > max Then max = mas(i) qty = 1 End If Next i MsgBox "последовательность чисел " + S MsgBox "максимальное число " + Str(max) + "число повторений " + Str(qty) End Sub Sub test() Call maxZnEnd Sub
{
if (a.Length != b.Length || a.Length == 0) throw new Exception("не верные параметры");
double ab = 0;
double a_length = 0;
double b_length = 0;
for (var i = 0; i < a.Length; i++)
{
ab += a[i] * b[i];
a_length = a[i] * a[i];
b_length = b[i] * b[i];
}
if (a_length * b_length == 0) throw new Exception("Нулевые вектора");
return ab / Math.Sqrt(a_length) / Math.Sqrt(b_length);
}
Sub test() Call maxZnEnd Sub