Menu
Coddy logo textTech

Recapitulação: Point Manager

Parte da seção Object Oriented Programming do Journey de C da Coddy — lição 11 de 61.

challenge icon

Desafio

Fácil

Vamos construir um módulo Point completo que gerencia uma coordenada 2D. Este desafio de recapitulação reúne tudo o que você aprendeu sobre tratar structs como objetos — usando ponteiros para modificar o estado e ponteiros const para operações de apenas leitura.

Você criará três arquivos:

  • point.h: Declare uma struct Point com dois membros inteiros: x e y. Também declare duas funções que atuam como métodos:
    • point_move — recebe um ponteiro para Point junto com dois inteiros (dx e dy), e desloca a posição do ponto adicionando esses valores a x e y
    • point_print — recebe um ponteiro const para Point e exibe suas coordenadas (esta função não deve modificar o ponto)
    Use include guards com o símbolo POINT_H.
  • point.c: Implemente ambas as funções. Pense cuidadosamente sobre qual função precisa de um ponteiro regular (para modificar o ponto) e qual usa um ponteiro const (para ler com segurança sem modificação).
  • main.c: Crie um Point, mova-o e exiba sua posição em diferentes estágios.

Você receberá quatro entradas inteiras: o x inicial, o y inicial, o valor dx (quantidade para mover horizontalmente) e o valor dy (quantidade para mover verticalmente).

No seu arquivo principal, inicialize um Point com as coordenadas iniciais, imprima sua posição inicial, mova-o pelas quantidades fornecidas e, em seguida, imprima sua nova posição.

A função point_print deve produzir a saída neste formato:

Point: ({x}, {y})

Por exemplo, com as entradas 3, 5, 2 e -1, a saída seria:

Point: (3, 5)
Point: (5, 4)

Experimente você mesmo

#include <stdio.h>
#include "point.h"

int main() {
    // Lê os valores de entrada
    int x, y, dx, dy;
    scanf("%d", &x);
    scanf("%d", &y);
    scanf("%d", &dx);
    scanf("%d", &dy);
    
    // TODO: Criar um Point com as coordenadas iniciais (x, y)
    
    // TODO: Imprimir a posição inicial usando point_print
    
    // TODO: Mover o ponto em (dx, dy) usando point_move
    
    // TODO: Imprimir a nova posição usando point_print
    
    return 0;
}

Todas as lições de Object Oriented Programming