Nb Приведенный ниже код не используется намеренно
В приведенном ниже коде я успешно вычисляю евклидову норму вектора.
#include <stdio.h>
int scanning_vector(int *vector);
int printing_vector(int *vector);
float euclidean_norm(int *vector);
int main()
{
int vector1[5], vector2[5];
float solution;
printf("Please enter the first vector:\n");
scanning_vector(vector1);
printing_vector(vector1);
solution=euclidean_norm(vector1);
printf("%f",solution);
printf("\nPlease enter the second vector:\n");
scanning_vector(vector2);
printing_vector(vector2);
return 0;
}
int scanning_vector(int *vector)
{
int i;
for (i = 0; i < 5; ++i)
{
scanf("%d", &vector[i]);
}
return 0;
}
int printing_vector(int *vector)
{
int i;
for (i = 0; i < 5; ++i)
{
printf(" %d ", vector[i]);
}
return 0;
}
float euclidean_norm(int *vector)
{
int i;
float temp, sqrt, euclidean_norm;
temp = 0;
for (i = 0; i < 5; ++i)
{
euclidean_norm=euclidean_norm+vector[i]*vector[i];
}
/* The below code is to calculate the square root without using math.h */
sqrt = euclidean_norm / 2;
while(sqrt != temp)
{
temp = sqrt;
sqrt = (euclidean_norm/temp + temp) / 2;
}
return sqrt;
}
Однако я не понимаете, почему приведенный ниже код не работает. Я только изменил в функции euclidean_norm
тип данных параметра euclidean_norm
с float
на integer
. Не могли бы вы дать мне быстрое объяснение, почему это не работает? Спасибо!
#include <stdio.h>
int scanning_vector(int *vector);
int printing_vector(int *vector);
float euclidean_norm(int *vector);
int main()
{
int vector1[5], vector2[5];
float solution;
printf("Please enter the first vector:\n");
scanning_vector(vector1);
printing_vector(vector1);
solution=euclidean_norm(vector1);
printf("%f",solution);
printf("\nPlease enter the second vector:\n");
scanning_vector(vector2);
printing_vector(vector2);
return 0;
}
int scanning_vector(int *vector)
{
int i;
for (i = 0; i < 5; ++i)
{
scanf("%d", &vector[i]);
}
return 0;
}
int printing_vector(int *vector)
{
int i;
for (i = 0; i < 5; ++i)
{
printf(" %d ", vector[i]);
}
return 0;
}
float euclidean_norm(int *vector)
{
int i, euclidean_norm;
float temp, sqrt;
temp = 0;
for (i = 0; i < 5; ++i)
{
euclidean_norm=euclidean_norm+vector[i]*vector[i];
}
/* The below code is to calculate the square root without using math.h */
sqrt = euclidean_norm / 2;
while(sqrt != temp)
{
temp = sqrt;
sqrt = (euclidean_norm/temp + temp) / 2;
}
return sqrt;
}