2017-05-07 15 views
-2

私はこの関数で '距離'が初期化されていないことを示す次のコードを持っています。円の面積デカルト平面からの点を使用

デカルト平面から2つの座標を受け取り、その間の距離を半径として円の面積を求めるコードです。これは、これは正しいコード

#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

が、これはCまたはC++ことになっていますか?ファイル名と行番号を含む実際のエラーメッセージは何ですか? – melpomene

+0

'getDistance()'の変数 'distance'は異なるスコープにありますので、' main() 'の変数' distance'とは完全に無関係です。 – Peter

+0

もちろんです。 'main'関数を見てください。 'distance'という変数を宣言しますが、決して初期化しないでください。次に、あなたは 'Area = 3.14 * distance * distance;'を実行します。 –

答えて

0

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

ある:main内部getDistanceと可変distance内部変数distanceは、二つの異なる変数です。

あなたはmain内でこの

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

distanceを書くときに設定されません。

あなたは割り当て

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

実装上の注意追加することによって、それを修正することができます:あなたは距離の二乗を必要とするので、あなたが機能getDistanceSquaredを定義し、これを代わりに使用して平方根をとる避けることができを。

1

mainファンクションの変数distancegetDistanceのファンクションではなく参照しているため、コンパイラの警告をよく読んでください。あなたはmain機能のどこにでもgetDistanceの結果を使用することができ、その後

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

:あなたが実際にやりたいこと

私が思うには、このでした。 ;)

あなたは、 distance変数を割り当てるような何かしようとするのを忘れて
関連する問題