Вычислить стоимость мебельного гарнитура, содержащего 4 стула, 2 кресла и 1 стол. стоимость изделий соответственно a, b и c. не в паскале и других языках программирования. надо составить блок схему линейного алгоритма. надо
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); }
В общем случае, трассировка - один из отладки программ врукопашную: состояние программы контролируется на определённом отрезке времени её выполнения путём анализа значений переменных. трассировка в том или ином виде при отладке программ сложнее школьного дз практически неизбежна. в простейшем случае, трассировка - вывод значений переменных на экран (например, в окно консоли) , либо расчёт их на бумажке для каждого шага. в более продвинутом варианте используются точки останова, окно наблюдения, выполнение по шагам и, если есть, контекстный интерпретатор выражений. есть также специальная "трассирующая консоль" - интерфейс вывода информации из программы в отладчик, если таковой присутствует. почти любой современный отладчик показывает состояние програмm при её останове, что делает трассировку процессом легко доступным
{
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);
}