Почему я получаю вывод 0? Я думаю, что есть что-то не так в моей конверсии угла и, возможно, в моем уравнении, но все же возиться с ним и перемещать какой-то материал всегда дает мне тот же результат.Почему я получаю вывод 0
Моя цель состоит в том, чтобы написать код C, который вычисляет угол & для любых двух заданных векторов и и v.
#include <stdio.h>
#include <math.h>
int main()
{
double ux, uy;
double vx, vy;
double inner_product(double vx, double vy, double ux, double uy);
double v;
double u;
double i;
double x;
double k;
double pi;
double angle;
double p;
ux = 1.0;
uy = 1.0;
vx = 1.0;
vy = 1.0;
printf ("input value for ux\n", ux);
scanf_s ("%f", &ux);
printf ("input value for uy\n", uy);
scanf_s ("%f", &uy);
printf ("input value for vx\n", vx);
scanf_s ("%f", &vx);
printf("input value for vy\n", vy);
scanf_s ("%f", &vy);
u = ux * vx;
v = uy * vy;
i = u * v;
x = u * u;
k = v * v;
pi = acos(-1.0);
p = acos(i/(sqrt(x * k)));
angle = ((p * 180)/pi); //converting from radians to degrees
printf("%f", angle);
return;
}
Хорошее место для начала было бы включить предупреждения компилятора, и устранить их. Посмотрите на первые несколько вызовов 'printf'. Вы передаете значения, которые не используются. Зачем? Удалить их. –
@TomKarzes, удалив ux = ... Я получаю неинициализированную ошибку, как бы я смог устранить эти ошибки? – DanielRossi
@ DanielRossi 1. Инициализировать переменные для чтения в случае сбоя чтения или проверки значений возврата функции чтения для проверки успешности чтения. 2. Удалить неиспользуемые * аргументы 'printf()' *. Обратите внимание, что избыточные аргументы на 'printf()' просто оцениваются и игнорируются, поэтому они не являются вредными. – MikeCAT