Menu
Coddy logo textTech

まとめ:Point Manager

CoddyのCジャーニー「Object Oriented Programming」セクションの一部 — レッスン 11/61。

challenge icon

チャレンジ

簡単

2D座標を管理する完全な Point モジュールを作成しましょう。この復習チャレンジでは、構造体をオブジェクトとして扱う方法、つまりポインタを使用して状態を変更する方法や、読み取り専用操作に const ポインタを使用する方法など、これまで学んだすべてを統合します。

3つのファイルを作成します:

  • point.h: 2つの整数メンバ xy を持つ Point 構造体を宣言します。また、メソッドとして機能する2つの関数を宣言します:
    • point_move — Pointへのポインタと2つの整数(dxdy)を受け取り、これらの値を xy に加算してポイントの位置を移動させます。
    • point_print — Pointへの const ポインタを受け取り、その座標を表示します(この関数はポイントを変更してはいけません)。
    シンボル POINT_H を使用してインクルードガードを記述してください。
  • point.c: 両方の関数を実装します。どの関数が(ポイントを変更するために)通常のポインタを必要とし、どの関数が(変更せずに安全に読み取るために) const ポインタを使用するかを慎重に考えてください。
  • main.c: Pointを作成し、それを移動させ、各段階での位置を表示します。

4つの整数の入力を受け取ります:初期の x初期の ydx の値(水平方向の移動量)、および dy の値(垂直方向の移動量)です。

メインファイルで、開始座標を使用して Point を初期化し、初期位置を出力し、指定された量だけ移動させてから、新しい位置を出力してください。

point_print 関数は、次の形式で出力する必要があります:

Point: ({x}, {y})

例えば、入力が 352-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;
}

Object Oriented Programmingのすべてのレッスン