Menu
Coddy logo textTech

Resumen: Point Manager

Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 11 de 61.

challenge icon

Desafío

Fácil

Vamos a construir un módulo Point completo que gestione una coordenada 2D. Este desafío de repaso reúne todo lo que has aprendido sobre el tratamiento de structs como objetos: el uso de punteros para modificar el estado y punteros const para operaciones de solo lectura.

Crearás tres archivos:

  • point.h: Declara una estructura Point con dos miembros enteros: x e y. También declara dos funciones que actúan como métodos:
    • point_move — recibe un puntero a Point junto con dos enteros (dx y dy), y desplaza la posición del punto sumando estos valores a x e y
    • point_print — recibe un puntero const a Point y muestra sus coordenadas (esta función no debe modificar el punto)
    Usa protectores de inclusión (include guards) con el símbolo POINT_H.
  • point.c: Implementa ambas funciones. Piensa detenidamente qué función necesita un puntero regular (para modificar el punto) y cuál utiliza un puntero const (para leer de forma segura sin modificaciones).
  • main.c: Crea un Point, muévelo y muestra su posición en diferentes etapas.

Recibirás cuatro entradas enteras: la x inicial, la y inicial, el valor dx (cantidad a mover horizontalmente) y el valor dy (cantidad a mover verticalmente).

En tu archivo principal, inicializa un Point con las coordenadas iniciales, imprime su posición inicial, muévelo según las cantidades dadas y luego imprime su nueva posición.

La función point_print debe producir la salida en este formato:

Point: ({x}, {y})

Por ejemplo, con las entradas 3, 5, 2 y -1, la salida sería:

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

Pruébalo tú mismo

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

int main() {
    // Leer los valores de entrada
    int x, y, dx, dy;
    scanf("%d", &x);
    scanf("%d", &y);
    scanf("%d", &dx);
    scanf("%d", &dy);
    
    // TODO: Crear un Point con las coordenadas iniciales (x, y)
    
    // TODO: Imprimir la posición inicial usando point_print
    
    // TODO: Mover el punto por (dx, dy) usando point_move
    
    // TODO: Imprimir la nueva posición usando point_print
    
    return 0;
}

Todas las lecciones de Object Oriented Programming