2017-05-07 3 views
-2

Ich habe den folgenden Code, der besagt, dass "Abstand" in dieser Funktion nicht initialisiert verwendet wird.Bereich eines Kreises Verwendung von Punkten aus einer kartesischen Ebene

Dies ist ein Code, der zwei Koordinaten aus einer kartesischen Ebene akzeptiert und den Abstand zwischen ihnen als Radius verwendet, um die Fläche eines Kreises zu finden. Dies ist der Code

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 

struct Point { 
    int x, y; 
}; 


double getDistance(struct Point a, struct Point b) 
{ 
    double distance; 
    distance = sqrt((a.x - b.x) * (a.x - b.x) + (a.y-b.y) *(a.y-b.y)); 
    return distance; 
} 



int main() 
{ 
    float Area; 
    double distance; 
    struct Point a, b; 
    printf("Enter coordinate of point a: "); 
    scanf("%d %d", &a.x, &a.y); 
    printf("Enter coordinate of point b: "); 
    scanf("%d %d", &b.x, &b.y); 
    printf("Distance between a and b: %lf\n", getDistance(a, b)); 

    Area= 3.14 * distance * distance; 
    printf("\nArea of Circle : %f", Area); 


    return 0; 
} 
+3

Soll das C oder C++ sein? Und was ist die eigentliche Fehlermeldung, einschließlich Dateiname und Zeilennummer? – melpomene

+0

Die Variable 'distance' in' getDistance() 'hat einen anderen Gültigkeitsbereich und ist daher völlig unabhängig von der Variablen' distance' in 'main()'. – Peter

+0

Natürlich tut es das. Sehen Sie sich die Funktion 'main' an. Sie deklarieren eine Variable namens "distance", initialisieren sie aber niemals. Dann machen Sie 'Fläche = 3,14 * Entfernung * Entfernung;' Hoppla. –

Antwort

0

Sie haben vergessen distance Variablen zuweisen, versuchen Sie so etwas wie:

int main() 
{ 
    float Area; 
    double distance; 
    struct Point a, b; 
    printf("Enter coordinate of point a: "); 
    scanf("%d %d", &a.x, &a.y); 
    printf("Enter coordinate of point b: "); 
    scanf("%d %d", &b.x, &b.y); 
    distance = getDistance(a, b); 
    printf("Distance between a and b: %lf\n", distance); 

    Area= 3.14 * distance * distance; 
    printf("\nArea of Circle : %f", Area); 


    return 0; 
} 
3

Das ist richtig: variable distance innerhalb getDistance und variable distance innerhalb main sind zwei verschiedene Variablen.

Wenn Sie schreiben diese

printf("Distance between a and b: %lf\n", getDistance(a, b)); 

distance innerhalb main nicht fertig.

Sie können das Problem beheben, indem eine Zuordnung Hinzufügen

distance = getDistance(a, b); 
printf("Distance between a and b: %lf\n", distance); 

Umsetzung beachten Sie: Da Sie Abstand zum Quadrat, dann können Sie durch die Definition einer Funktion getDistanceSquared Quadratwurzel vermeiden, und es stattdessen verwenden.

1

Sie sollten die Compiler-Warnung sorgfältiger lesen, da sie sich auf die Variable distance in Ihrer main-Funktion bezieht, nicht auf die in getDistance.

distance = getDistance(a, b); 
printf("Distance between a and b: %lf\n", distance); 

Dann Sie das Ergebnis getDistance können überall in Ihrem main Funktion: Diese

Ich denke, was Sie tatsächlich war tun wollte. ;)

Verwandte Themen