Estructuras - Departamento de Lenguajes y Sistemas Informáticos

Anuncio
Unidad Didáctica 25
Estructuras
Fundamentos de Programación
Departamento de Lenguajes y Sistemas Informáticos
Versión 1.0.0
Estructuras (struct)


Permiten definir tipos de datos más complejos
formados por la unión de varios elementos o campos.
Los campos pueden ser de distintos tipos.
Definición
typedef struct {
T1 c1;
T2 c2;
...
Tn cn;
} Tr;
Declaración de variables
Tr r1;
r1.c1 = v1;
r1.c2 = v2;
…
r1.cn = vn;
Tr r2 = {v1, v2,…,vn};
UD25: Estructuras
Estructura Persona

Definir un tipo struct que tenga los campos nombre,
apellidos, edad y sexo para el tipo persona.
#define MAXCAR 256
typedef struct {
char nombre[MAXCAR];
char apellidos[MAXCAR];
int edad
char sexo;
} Persona;

Punteros a estructuras:
typedef Persona *PersonaP;
UD25: Estructuras
Acceso a los campos con . y ->
Persona p;
leePersona(&p);
p.edad++;
strcpy(p.nombre, “María”);
void leePersona(PersonaP pp)
{
scanf(“%s”, pp->nombre);
scanf(“%s”, pp->apellidos);
scanf(“%c”, &pp->sexo);
scanf(“%d”, &pp->edad);
}
escribePersona(p);
void escribePersona(const Persona p)
{
printf(“%s, %s”, p.apellidos, p.nombre);
printf(“%c %d”, p.sexo, p.edad);
}
UD25: Estructuras
Ejercicios – Punto (I)




Escriba un fichero de cabecera Punto.h con las
definiciones necesarias para trabajar con el tipo Punto.
Defina en el mismo fichero un tipo Poligono como un
array de tipo Punto.
Añada la definición de un tipo enumerado que contenga
los nombres de los cuatro cuadrantes y la palabra Ejes
para aquellos puntos que estén sobre los ejes.
Añada las definiciones de los siguientes métodos para el
tipo Punto:



double distanciaAlOrigen(Punto p)
Punto masCercanoAlOrigen(const Poligono pol)
Cuadrante cuadrante(Punto p)
UD25: Estructuras
Ejercicios – Punto (II)







Punto sumaPuntos(Punto p1, Punto p2)
Punto leePunto()
void leePoligono(Poligono *pol)
Escriba el fichero Punto.c con el código necesario.
Escriba un fichero PruebaPunto.c que contenga un
método main donde se invoquen todos los métodos
anteriores y se impriman los resultados en pantalla.
Intente imprimir por pantalla el resultado de invocar el
método cuadrante. ¿Qué especificador de formato habrá
que usar?
Implemente un nuevo método que devuelva una cadena
de texto a partir de un parámetro de tipo Cuadrante.
UD25: Estructuras
Ejercicios – Album (I)

Escriba en un fichero Album.h las definiciones de tipos y
estructuras necesarias para trabajar con los siguientes
tipos:





Cancion: título, intérprete, duración, año
Album: nombre, género musical, array de canciones
Un álbum tendrá un máximo de 100 canciones.
El género musical de un álbum debe ser uno de los
siguientes: pop, rock, jazz, salsa, flamenco.
Defina también el tipo AlbumP como un tipo puntero del
tipo Album.
UD25: Estructuras
Ejercicios – Album (II)

Añada al fichero Album.h las declaraciones de los
siguientes métodos:






leeCancion. Lee la información de una canción por teclado.
leeAlbum. Lee desde teclado la información de un álbum.
duracionTotal. Calcula la duración total de todas las
canciones de un álbum.
masAntigua. Devuelve la canción más antigua de un álbum.
numeroDeCanciones. Devuelve el número de canciones de
un intérprete determinado en un álbum.
muestraCanciones. Muestra por pantalla la información de
todas las canciones de un álbum, cada canción en una línea.
UD25: Estructuras
Ejercicios – Album (III)




anyadeCancion. Añade una nueva canción a un álbum. En
caso de que el álbum esté lleno se devolverá el valor -1. En
otro caso devolverá 0.
subAlbum. Devuelve un álbum con aquellas canciones
correspondientes a un año determinado.
Escriba en un fichero Album.c las implementaciones de
todos los métodos anteriores.
Escriba un fichero PruebaAlbum.c que contenga un
método main donde se invoquen todos los métodos
anteriores y se impriman los resultados en pantalla.
UD25: Estructuras
Descargar