Menu
Coddy logo textTech

まとめ:Point Manager

CoddyのCジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 11/61。

challenge icon

チャレンジ

簡単

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

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

  • point.h: xy というtwoつの整数メンバーを持つ Point structをDeclareします。また、メソッドとして機能するtwoつのfunctionをDeclareします:
    • point_move: Pointへのpointerとtwoつの整数(dxdy)を受け取り、これらのvaluesを xy に加算してpointのpositionを移動します
    • point_print: Pointへの const pointerを受け取り、そのcoordinatesを表示します(このfunctionはpointをmodifyしてはいけません)
    POINT_H というsymbolをusingしてinclude guardsを使用します。
  • point.c: 両方のfunctionをImplementします。pointをmodifyするためにどのfunctionが通常のpointerを必要とし、変更せずに安全に読み取るためにどのfunctionが const pointerを使用するのかを慎重に考えてください。
  • main.c: PointをCreateし、移動させ、さまざまな段階でそのpositionを表示します。

fourつの整数入力を受け取ります: initial xinitial ydx value(水平方向に移動する量)、dy value(垂直方向に移動する量)です。

mainファイルで、開始時のcoordinatesを持つ Point を初期化し、initial positionをPrintし、指定された量だけ移動させてから、新しいpositionをPrintします。

point_print functionは次のformatでOutputする必要があります:

Point: ({x}, {y})

たとえば、入力が 352-1 の場合、Outputは次のようになります:

Point: (3, 5)
Point: (5, 4)
REQUIRED OUTPUT FORMAT: [Your translated content here]

自分で試してみよう

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

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Cオンラインコンパイラ