Почему этот цикл не работает для нахождения суммы векторов Евклида? - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь найти евклидову сумму двух векторов (vector1, vector2), которые я уже ввел в программу. Я пытаюсь сделать это с помощью цикла while, но по какой-то причине он не даст правильного результата. Может ли кто-нибудь показать мне, где я ошибаюсь с моим кодом? Огромное спасибо.

i = 1;
int sum = 0;
while (i <= n - 1) {
sum = sqrt((vector1[i] - vector2[i])^2);
i++;
}




printf("%d", sum);

1 Ответ

1 голос
/ 20 октября 2019

Вы делаете sum = на каждой итерации цикла, что означает, что к моменту окончания цикла sum получит значение, вычисленное на последней итерации.

Полагаю, вы хотите использоватьsum += вместо.

Также обратите внимание, что тип sum равен int, поэтому вы потеряете любую информацию с плавающей запятой, вычисленную sqrt во время процесса.

Также обратите внимание, что a^b означает XOR между a и b, а не a в степени b.

Короче говоря, это должно решить все 3 проблемы, перечисленные выше:

sum += abs(vector1[i] - vector2[i]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...