いくつかの整数を計算しようとしていますが、計算の答えには小数が含まれることがわかっているので、double を使用する必要があります。コードの問題がどこにあると思われるかについてコメントしました(//これはすべてがうまくいかない場所です)。
入力して計算を型キャストしようとしましたobs.avgX = (float) (arr[0].x + arr[1].x + arr[2].x + arr[3].x + arr[4].x) / 5;
が、まったく機能しません。
#include <stdio.h>
int main(void)
{
struct Observations
{
int x;
int y;
double avgX;
double avgY;
};
struct Observations arr[5];
struct Observations obs;
for(int i=0; i < 5; i++)
{
printf("Enter coordinates for point #%d (x,y): ", i +1);
scanf("%d, %d", &arr[i].x, &arr[i].y);
}
printf("\n\nYou entered:\n");
for(int i=0; i < 5; i++)
{
printf("Point #%d: %d,%d\n", i, arr[i].x, arr[i].y);
}
// This is where everything goes wrong
obs.avgX = (arr[0].x + arr[1].x + arr[2].x + arr[3].x + arr[4].x) / 5;
obs.avgY = (arr[0].y + arr[1].y + arr[2].y + arr[3].y + arr[4].y) / 5;
printf("Average of X: %.2f\n", obs.avgX);
printf("Average of Y: %.2f", obs.avgY);
getchar();
getchar();
return 0;