Vordefinierten Wurzel-Funktion, ohne mit sqrt() aus math.h in C

Hausaufgaben Frage:

  • Cygwin GNU GDB
  • Cygwin GNU GCC

Versuchen, die Länge der hypotenuse C aus der Quadratwurzel der Eine macht der 2 und B macht der 2.

Beispiel Eingang:

Geben Sie die Länge von zwei Seiten eines rechtwinkligen Dreiecks: 2.25 8.33

Antwort:

Die Länge der hypotenuse ist: 8.628523

  • Frage:, wenn ich geben Sie die gleichen Eingaben wie oben, das Ergebnis ist nicht das gleichen - Ausgabe ist 19.84.9596

Voll code unten:

float squareRoots(float *s)
{
    float cx;
    float nx;
    float e;

    cx = 1;
    nx = (cx +*s/cx)/2;
    e = nx - cx;
    cx = nx;

    if (e*e > 0.001)
    {
        nx = (cx +*s/cx)/2;
        return nx;
    } else {
        return nx;
    }
}

float hypotenuse(float *a, float *b)
{
    float c;
    //raise a to power of 2
    *a = (*a * *a);
    *b = (*b * *b);
    //add a and b
    float y = *a + *b;
    c = squareRoots(&y);

    return c;
}


int main()
{
    float x,y;

    printf("Enter the length of two sides of a right-angled triangle:");
    scanf("%f %f", &x, &y);
    float k=hypotenuse(&x,&y);

    printf("The length of the hypotenuse is: %f", k);

    exit(0);
}
  • Warum auf der Erde Sie übergeben Zeiger auf Schwimmern, die statt der übergabe von Wert?
  • Ich Stimme zu; in Anbetracht, dass der code geändert wird, die Werte zu, es ist ziemlich schrecklich.
InformationsquelleAutor | 2009-01-25
Schreibe einen Kommentar