1

ユーザーが長方形の座標を入力するためのプログラムを作成する必要がある課題に取り組んでいます。

このプログラムは、構造体内の構造体になることを意図しています。

無効な場合は、エラー メッセージを出力し、ユーザーが正しいと判断するまで無期限に再試行できるようにする必要があります。

プログラムはユーザーにポイントの座標を繰り返し要求する必要があり、ユーザーが x と y にそれぞれ 0 と 0 を入力すると、プログラムは終了します。

プログラムは、点が長方形の内側にあるか外側にあるかを判断し、内側のものを出力する必要があります。また、メイン関数をどこに配置し、何を配置するかを理解する必要もあります。ありがとう。

これが私のコードです:

#include <stdio.h>
typedef struct
{
int x;
int y;
} point_t;

typedef struct
{
point_t upper_left;
point_t lower_right;
} rectangle_t;

int is_inside (point_t* pPoint, rectangle_t* pRect)
{
return ((pPoint->x >= pRect->upper_left.x ) &&
(pPoint->x <= pRect->lower_right.x) &&
(pPoint->y >= pRect->upper_left.y ) &&
(pPoint->y <= pRect->lower_right.y));

}

point_t get_point(char* prompt)
{
point_t pt;
printf("Given a rectangle with a side parallel to the x axis and a series of points on          the xy plane this program will say where each point lies in relation to the rectangle. It   considers a point on the boundary of the rectangle to be inside the rectangle\n");
printf ("Enter coordinates for the upper left corner\n");
printf ("X: ");
scanf ("%d", &pt.x);
printf ("Y: ");
scanf ("%d", &pt.y);

return pt;
}

rectangle_t get_rect(char* prompt)
{
rectangle_t rect;
printf (prompt);
rect.upper_left = get_point("Upper left corner: \n");
rect.lower_right = get_point("Lower right corner: \n");

return rect;
}
int main(){
/* calls goes here */
return 0;
}

編集: main を追加しましたが、関数を呼び出す方法がわかりません。

4

1 に答える 1

0

スタイルを少し変更して、次のように適用することをお勧めします。

  1. main の前に関数のプロトタイプを宣言します。
  2. ほとんどの関数でポインター (参照パス関数) を使用する必要はないと思いis_insideます。値が変更されないためです。
  3. 四角形のポイントをポイント タイプとして宣言します (実際にはポイントとして使用しているため)。

呼び出しを行うには、メイン内の関数の引数を入力するだけです。例:

/* Headers, libs, definitions, etc must be here */
/* Prototypes must be here */

int main (void)
{
    /* Variables declarations */
    int test_point;
    point_t point;
    rectanle_t rectangle;

    /* Functions calls... */
    /* holder = function_name( argument1, argument2 ); */

    test_point = is_inside( &point, &rectangle ); 


}
/*Function Declarations must be here*/
于 2012-11-06T22:00:47.157 に答える