/* * EJERCICIO DE LENGUAJE C: STRUCTS Y PUNTEROS * * 1. Define una struct llamada Coordenada que contenga dos campos enteros: x e y. * 2. Implementa una función constructora llamada Coordenada* crear_coordenada(int x, int y) que: * - Reserve memoria dinámicamente utilizando malloc para una nueva estructura Coordenada. * - Verifique si la reserva de memoria fue exitosa. * - Inicialice sus campos x e y con los valores pasados como parámetros. * - Devuelva el puntero a la estructura creada. * 3. En la función main: * - Utiliza la función constructora para crear una coordenada. * - Muestra por pantalla los valores iniciales utilizando el operador flecha (->). * - Modifica los valores de los campos de la estructura utilizando también el operador flecha (->). * - Muestra los nuevos valores por pantalla. * - Libera la memoria reservada dinámicamente utilizando free para evitar pérdidas de memoria. */ #include #include typedef struct{ int x; int y; }Coordenada; Coordenada* crear_coordenada(int x, int y); void modificar_coordenada(Coordenada**, int x, int y); void imprimir_coordenada(Coordenada**); int main(void){ Coordenada* cord = crear_coordenada(10, 20); imprimir_coordenada(&cord); modificar_coordenada(&cord, 30, 40); imprimir_coordenada(&cord); free(cord); return 0; } Coordenada* crear_coordenada(int x, int y){ Coordenada* new_cord = malloc(sizeof(Coordenada)); if(new_cord == NULL){ perror("No se pudo crear la coordenada\n"); exit(1); } new_cord->x = x; new_cord->y = y; return new_cord; } void modificar_coordenada(Coordenada** cord_address, int x, int y){ if((*cord_address) == NULL){ perror("No se ha proporcionado una coordenada para modificar\n"); exit(1); } (*cord_address)->x = x; (*cord_address)->y = y; } void imprimir_coordenada(Coordenada** a){ printf("Coordenada(%d, %d);\n", (*a)->x, (*a)->y); }