Menu
Coddy logo textTech

Итоги: Point Manager

Часть раздела Объектно-ориентированное программирование путешествия по C на Coddy. Урок 11 из 61.

challenge icon

Задание

Легко

Давайте создадим полный модуль Point, который управляет 2D-координатой. Это итоговое задание объединяет всё, чему вы научились, рассматривая структуры как объекты: используя указатели для изменения состояния и указатели const для операций только чтения.

Вы создадите три файла:

  • point.h: Declare структуру Point с two integer members: x и y. Также Declare two функции, которые действуют как методы:
    • point_move: Takes указатель на Point вместе с two integers (dx и dy) и сдвигает position точки, добавляя эти values к x и y
    • point_print: Takes указатель const на Point и отображает её координаты (эта function не Should modify точку)
    Используйте include guards с символом POINT_H.
  • point.c: Implement обе функции. Внимательно подумайте, какой функции нужен обычный указатель (чтобы modify точку), а какая использует указатель const (чтобы безопасно Read без изменения).
  • main.c: Create Point, перемещайте её и отображайте её position на разных этапах.

Вы получите four integer inputs: initial x, initial y, dx value (величина горизонтального перемещения) и dy value (величина вертикального перемещения).

В вашем основном файле инициализируйте Point с начальными координатами, выведите её initial position, переместите её на заданные values, затем выведите её новую position.

Функция point_print Should выводить данные в следующем формате:

Point: ({x}, {y})

Например, при inputs 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: Создать Point с начальными координатами (x, y)
    
    // TODO: Вывести начальную позицию с помощью point_print
    
    // TODO: Переместить точку на (dx, dy) с помощью point_move
    
    // TODO: Вывести новую позицию с помощью point_print
    
    return 0;
}

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор C