Menu
Coddy logo textTech

Riepilogo: gestore di punti

Fa parte della sezione Programmazione orientata agli oggetti del percorso C di Coddy. Lezione 11 di 61.

challenge icon

Sfida

Facile

Costruiamo un modulo Point completo che gestisce una coordinata 2D. Questa sfida di riepilogo mette insieme tutto ciò che hai imparato sull’uso delle struct come oggetti: utilizzare i puntatori per modificare lo stato e i puntatori const per le operazioni di sola lettura.

Creerai tre file:

  • point.h: dichiara una struct Point con due membri interi: x e y. Dichiara anche due funzioni che agiscono come metodi:
    • point_move: accetta un puntatore a Point e due interi (dx e dy) e sposta la posizione del punto aggiungendo questi valori a x e y
    • point_print: accetta un puntatore const a Point e ne visualizza le coordinate (questa funzione non dovrebbe modificare il punto)
    Usa le protezioni di inclusione con il simbolo POINT_H.
  • point.c: implementa entrambe le funzioni. Rifletti attentamente su quale funzione necessita di un puntatore normale (per modificare il punto) e quale usa un puntatore const (per leggere in sicurezza senza modificare).
  • main.c: crea un Point, spostalo e visualizza la sua posizione in diverse fasi.

Riceverai quattro valori interi in input: la x iniziale, la y iniziale, il valore di dx (quantità di spostamento orizzontale) e il valore di dy (quantità di spostamento verticale).

Nel file principale, inizializza un Point con le coordinate di partenza, stampa la sua posizione iniziale, spostalo delle quantità indicate e poi stampa la sua nuova posizione.

La funzione point_print dovrebbe produrre l’output in questo formato:

Point: ({x}, {y})

Per esempio, con gli input 3, 5, 2 e -1, l’output sarebbe:

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

Provalo tu

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

int main() {
    // Leggi i valori di input
    int x, y, dx, dy;
    scanf("%d", &x);
    scanf("%d", &y);
    scanf("%d", &dx);
    scanf("%d", &dy);
    
    // TODO: Crea un Point con coordinate iniziali (x, y)
    
    // TODO: Stampa la posizione iniziale usando point_print
    
    // TODO: Sposta il punto di (dx, dy) usando point_move
    
    // TODO: Stampa la nuova posizione usando point_print
    
    return 0;
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C online