まとめ:Point Manager
CoddyのCジャーニー「Object Oriented Programming」セクションの一部 — レッスン 11/61。
チャレンジ
簡単2D座標を管理する完全な Point モジュールを作成しましょう。この復習チャレンジでは、構造体をオブジェクトとして扱う方法、つまりポインタを使用して状態を変更する方法や、読み取り専用操作に const ポインタを使用する方法など、これまで学んだすべてを統合します。
3つのファイルを作成します:
point.h: 2つの整数メンバxとyを持つPoint構造体を宣言します。また、メソッドとして機能する2つの関数を宣言します:point_move— Pointへのポインタと2つの整数(dxとdy)を受け取り、これらの値をxとyに加算してポイントの位置を移動させます。point_print— Pointへのconstポインタを受け取り、その座標を表示します(この関数はポイントを変更してはいけません)。
POINT_Hを使用してインクルードガードを記述してください。point.c: 両方の関数を実装します。どの関数が(ポイントを変更するために)通常のポインタを必要とし、どの関数が(変更せずに安全に読み取るために)constポインタを使用するかを慎重に考えてください。main.c: Pointを作成し、それを移動させ、各段階での位置を表示します。
4つの整数の入力を受け取ります:初期の x、初期の y、dx の値(水平方向の移動量)、および dy の値(垂直方向の移動量)です。
メインファイルで、開始座標を使用して Point を初期化し、初期位置を出力し、指定された量だけ移動させてから、新しい位置を出力してください。
point_print 関数は、次の形式で出力する必要があります:
Point: ({x}, {y})例えば、入力が 3、5、2、-1 の場合、出力は次のようになります:
Point: (3, 5)
Point: (5, 4)自分で試してみよう
#include <stdio.h>
#include "point.h"
int main() {
// 入力値を読み込む
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: 初期座標 (x, y) を持つ Point を作成する
// TODO: point_print を使用して初期位置を表示する
// TODO: point_move を使用して点を (dx, dy) だけ移動させる
// TODO: point_print を使用して新しい位置を表示する
return 0;
}