Menu
Coddy logo textTech

Итоги: Point Manager

Часть раздела Object Oriented Programming путешествия по C на Coddy — урок 11 из 61.

challenge icon

Задание

Легко

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

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

  • point.h: Объявите структуру Point с двумя целочисленными членами: x и y. Также объявите две функции, которые действуют как методы:
    • point_move — принимает указатель на Point вместе с двумя целыми числами (dx и dy) и сдвигает положение точки, добавляя эти значения к x и y
    • point_print — принимает указатель const на Point и отображает его координаты (эта функция не должна изменять точку)
    Используйте include guards с символом POINT_H.
  • point.c: Реализуйте обе функции. Тщательно подумайте, какой функции нужен обычный указатель (для изменения точки), а какая использует указатель const (для безопасного чтения без изменения).
  • main.c: Создайте Point, перемещайте его и отображайте его положение на разных этапах.

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

Все уроки раздела Object Oriented Programming