Menu
CoddyTech

Revisão: Gerenciador de pontos

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 Point completo 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 proteções de inclusão com o símbolo POINT_H.
  • point.c: Implemente as duas funções. Pense com cuidado em qual função precisa de um ponteiro comum (para modificar o ponto) e qual usa um ponteiro const (para ler com segurança, sem modificar).
  • main.c: Crie um Point, mova-o e exiba sua posição em diferentes etapas.

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

No 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() {
    // Leia os valores de entrada
    int x, y, dx, dy;
    scanf("%d", &x);
    scanf("%d", &y);
    scanf("%d", &dx);
    scanf("%d", &dy);
    
    // TODO: Crie um Point com as coordenadas iniciais (x, y)
    
    // TODO: Imprima a posição inicial usando point_print
    
    // TODO: Mova o ponto por (dx, dy) usando point_move
    
    // TODO: Imprima 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