Menu
Coddy logo textTech

Recapitulação: Point Manager

Parte da seção Programação Orientada a Objetos do Journey de C da Coddy. Lição 11 de 61.

challenge icon

Desafio

Fácil

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

Você criará três arquivos:

  • point.h: Declare uma struct Point com dois membros inteiros: x e y. Declare também 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 (essa função não deve modificar o ponto)
    Use guardas de inclusão com o símbolo POINT_H.
  • point.c: Implemente as duas funções. Pense cuidadosamente sobre qual função precisa de um ponteiro comum (para modificar o ponto) e qual usa um ponteiro const (para ler com segurança sem fazer modificações).
  • main.c: Crie um Point, mova-o e exiba sua posição em diferentes etapas.

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

Em 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() {
    // Ler 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 coordenadas iniciais (x, y)
    
    // TODO: Imprimir a posição inicial usando point_print
    
    // TODO: Mover o ponto por (dx, dy) usando point_move
    
    // TODO: Imprimir a nova posição usando point_print
    
    return 0;
}

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de C online