PRÁCTICA 11. ESTRUCTURAS 1. Introducción Una estructura es

Anuncio
Fundamentos de la Informática
Primero de Industriales
Mecánica, Química, Electricidad y Electrónica
Departamento de Ingeniería Electrónica, Sistemas Informáticos y Automática
PRÁCTICA 11. ESTRUCTURAS
1. Introducción
Una estructura es un tipo de datos que permite agrupar bajo un mismo nombre
elementos del mismo o de distinto tipo de datos, que se encuentran muy relacionados
entre sí.
El lenguaje C permite la creación de estructuras mediante la utilización de struct.
De forma genérica una estructura se define de la siguiente forma:
struct NombredelaEstructura {
TipoDato_1 nombre_campo_1;
TipoDato_2 nombre_campo_2;
…..
TipoDato_N nombre_campo_N;
};
Cuando trabajamos con una estructura es posible trabajar con toda la estructura
completa o con sus campos de manera independiente. Trabajar con toda la estructura
tiene sus limitaciones ya que es posible la asignación de dos variables que tengan la
misma estructura, pero no su comparación.
También es posible pasar una estructura o un campo de una estructura como parámetro
a una función y que una función devuelva una estructura o un campo de una estructura.
Un campo de una estructura puede ser de un tipo básico como char, int, etc, pero
también puede ser un array, un puntero u otra estructura.
2. Ejercicios
1. Defina una estructura que permita guardar información sobre:
a. Un alumno
b. Un libro
c. Una fecha
d. Una hora determinada de un día
e. Una fecha, incluyendo día, mes año y hora.
f. 100 alumnos.
Fundamentos de la Informática
Primero de Industriales
Mecánica, Química, Electricidad y Electrónica
Departamento de Ingeniería Electrónica, Sistemas Informáticos y Automática
2. Dadas las siguientes definiciones de estructuras indique cómo se accede a los
siguientes miembros.
struct alumno{
char nombre[100];//nombre del alumno
char dni[10];
//dni
int curso;
//curso superior en el que se encuentra
int num_asignaturas[3]; //número de asignaturas por curso
};
//vector de 100 posiciones en el que cada elemento es un struct alumno
struct alumno vec_alumnos[100];
a) Sacar por pantalla todos los alumnos que estén en tercer curso.
b) Sacar por pantalla todos los alumnos a los que le queden menos de
3 asignaturas para terminar la carrera.
c) Sacar por pantalla todos los alumnos que se llamen Antonio.
d) Sacar por pantalla todos los alumnos que se llamen Antonio y estén
en primer curso.
e) Sacar por pantalla aquellos alumnos que tengan más asignaturas de
primer curso que de segundo y tercero juntas.
f) Debido a un aprobado general de una asignatura de tercero, hay que
reducir el número de asignaturas de tercero de todos los alumnos en
1, excepto de aquellos que ya hayan aprobado todas las de tercero.
g) Guardar el dni introducido por el usuario en el alumno número 23
del vector.
3. Crear una función en C a la que se le pase una estructura alumno similar a la
del ejercicio anterior y muestre la información que contiene por pantalla.
4. Crear una función en C a la que se le pase una estructura alumno vacía y la
rellene con información introducida por el usuario
5. Crear una función a la que se le pase un vector de 3 alumnos y rellene la
información de los tres alumnos.
6. Escriba una función que reciba dos variables struct alumno y devuelva un 1
si son iguales y un -1 si no lo son.
7. Escriba una función a la que se le pase dos struct alumno e intercambie los
valores que contienen.
Fundamentos de la Informática
Primero de Industriales
Mecánica, Química, Electricidad y Electrónica
Departamento de Ingeniería Electrónica, Sistemas Informáticos y Automática
8. Dadas las siguientes definiciones de variables:
struct complejo{
float real;
float imaginario;
};
struct complejo p1, *p2;
¿Cuál de las siguientes sentencias es correcta?
a. p1=&p2;
b. printf (“%i”, p1.real);
c. printf (“%i”, p1->imaginario);
d. printf (“%f”, p1->real):
e. printf (“%f”, p2.real);
9. Dado el siguiente fragmento de programa:
struct estructura{
double x;
double y;
};
struct estructura p1;
struct estructura componentes[100] ;
¿Cuál de las siguientes sentencias es válida?
a.
b.
c.
d.
componentes[5] = p1.x;
componentes.x[i] = p1.x;
componentes[5].x = p1->x;
componentes [5].x = p1.y;
10. Defina una estructura que represente un punto del espacio bidimensional y
escriba una función a la que se le pasen tres puntos y devuelva un 1 si los
tres puntos están alineados y un -1 sino lo están.
Fundamentos de la Informática
Primero de Industriales
Mecánica, Química, Electricidad y Electrónica
Departamento de Ingeniería Electrónica, Sistemas Informáticos y Automática
11. Defina una estructura que permita almacenar datos referentes a un recién
nacido: nombre, sexo, fecha de nacimiento, peso al nacer, y peso en cada
semana de los seis primeros meses de vida.
12. A partir de la estructura siguiente:
struct futbolista {
char nombre[90];
int edad;
char equipo[50];
char alineacion[30];
};
Definir una estructura seleccion que permita guardar los datos relativos
a una selección nacional: pais, nombre del entrenador, jugadores,
resultados.
Descargar