0

私は構造体の初心者で、構造体が何に役立つのかほとんど理解していません。5 ポイント分のスペースを持つ配列を作成する課題があります。すべてのポイントはユーザーによって入力されます。

配列で構造体を使用する方法がわかりません。やってみたけど全然ダメ…

        #include <stdio.h>

int main(void)
{

    struct Input
    {
        int x;
        int y;
    };

    struct Input arr[5];


    for(int i=1; i <= 5; i++)
    {
        printf("Enter coordinates for point #%d (x,y): ", i);
        scanf("%d,%d", &arr[i].x, &arr[i].y);
    }

    printf("\n\nYou entered:\n");

    for(int i=1; i <= 5; i++)
    {
        printf("Point #%d: %d, %d\n", i, arr[i].x, arr[i].y);
    }


    getchar();
    getchar();

    return 0;

}

編集

x座標の平均を計算しようとしていますが、obs.avgXは計画どおりに機能せず、計算は常に0になります。

#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);
    }


    obs.avgX = arr[0].y + arr[1].y + arr[2].y + arr[3].y + arr[4].y / 5;
    printf("Average of X: %d", obs.avgX);


    getchar();
    getchar();

    return 0;

}
4

3 に答える 3

1

SirDarius はコードについて素晴らしい説明をしてくれました。

あなたが言った

それらが何に役立つかをほとんど理解していない

実際、構造体は、異なるタイプまたは複数のタイプのデータを格納できる一種の「データ セーバー」であると考えることができます。

たとえば、配列を使用して、セルに x 座標と y 座標の両方を格納することはできません (複数の種類のデータ)。

さらに、生徒の学校情報を保存する場合は、一意の ID (整数)、名前 (文字列)、成績 (整数)、および各レッスンの平均 (float) (異なるデータ) を保存することができます。構造体を使用すると、そのように簡単に保存できます。

struct Student {
int ID;
char * name;
int grade;
float average;
}

構造体が本当に便利な理由を理解するのに役立つことを願っています:)

于 2013-11-09T10:39:07.593 に答える
0

平均を計算すると、以下のようにブレースが欠落しています。

obs.avgX = (arr[0].y + arr[1].y + arr[2].y + arr[3].y + arr[4].y) / 5;

%fまた、 double 型の変数を出力するには、 ではなく書式指定子として使用する必要があります%d

于 2013-11-09T11:27:52.933 に答える