70 lines
2.0 KiB
C
70 lines
2.0 KiB
C
/*
|
|
* 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 <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
|
|
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);
|
|
}
|
|
|