Ich möchte den Abstand zwischen zwei Punkten berechnen, aber ich muss es tun, indem Sie eine Hauptfunktion verwenden. Ich habe einige Schwierigkeiten, um sicherzustellen, dass mein Programm den richtigen Wert zurückgibt. Ich habe meinen Code an diesen Code angehängt, so dass ich es schätzen würde, wenn jemand mir helfen könnte, den Teil zu korrigieren, bei dem ich vielleicht einen Fehler gemacht habe. (Anmerkung: Ich bin ziemlich neu in C so kann ich verstehen, einige Dinge einige zusätzliche Hilfe benötigen.)Die Entfernung zwischen zwei Punkten in C finden
#include <stdio.h>
double distance(double x1, double y1, double x2, double y2)
{
double square_difference_x = (x2 - x1) * (x2 - x1);
double square_difference_y = (y2 - y1) * (y2 - y1);
double sum = square_difference_x + square_difference_y;
double z = 0.00001;
for (double i = 0; i < sum; i = i + z)
{
if (i * i == sum)
{
return i;
}
}
}
int main(void)
{
double a = 1.0, b = 2.0, c = 4.0, d = 6.0;
double dis;
dis = distance(a, b, c, d);
printf("The distance of the points (%lf, %lf) and (%lf, %lf) is %lf\n", a,b,c,d,dis);
return 0;
}
ich wie mein Problem fühlen geschieht mit der return
Option in der Hauptfunktion, obwohl ich nicht so bin sicher, wie Sie dieses Problem beheben können, wenn es eines gibt. `
"Abstand" kann sehr gut keinen Wert zurückgeben, da der 'i * i == Summe' Test wahrscheinlich fehlt. Gleitkommazahlen auf Computern sind [im Allgemeinen nicht genau] (und http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency/3730040#3730040) und sogar wenn sie wären, würde das wahrscheinlich immer noch häufig nicht treffen. Vielleicht möchten Sie einfach 'sqrt (sum)' aus '' verwenden, mit dem zusätzlichen Vorteil, dass es schneller ist als eine lineare Suche nach der Quadratwurzel. Wenn Sie das nicht können, werden Sie wahrscheinlich "i * i> = sum" machen wollen, was wahrscheinlich irgendwann passieren wird. –
zneak
Beachten Sie auch, dass bei sehr großen Zahlen 'i + 0.00001' tatsächlich einen Wert zurückgibt, der mit" i "identisch ist, wodurch Ihr Programm in einer Endlosschleife stehen würde. – zneak
Das 'printf' Format für' double' ist '% f'. –