Registros y Arreglos en C

Facultad de Informática, Electrónica y Comunicación Inf200 e Inf212 – Estructura de Datos Registro Vs. Vector Estructur

Views 327 Downloads 1 File size 38KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Facultad de Informática, Electrónica y Comunicación Inf200 e Inf212 – Estructura de Datos Registro Vs. Vector

Estructuras o Registros Una estructura o registro es una estructura de datos que agrupa variables que pueden tener tipos diferentes, es decir, en una estructura podemos tener datos o valores de diferentes tipos. Cada componente de un registro se conoce como campo o miembro. Comparemos un registro con un vector, para aclarar conceptos e identificar cuando conviene utilizar una u otra o ambas estructura de datos. Aspecto a considerar Tipo nombre[capacidad]

Vector Estructura Se especifica la capacidad Struct tiponuevo Los componentes de la del vector, es decir, la { estructura se declaran cantidad de componentes tipo1 campo1; dentro de ella, cada uno con que puede tener. Todos los tipo2 campo2; su tipo y nombre de componentes tienen el : variable, los tipos pueden mismo tipo. El nombre del tipon campon; ser diferentes. vector se considera una } El nombre (tiponuevo) de la variable y representa la estructura se considera dirección de memoria del struct tiponuevo nombre; como un tipo, no una primer elemento. variable.

Ejemplo: int edad[15]; flotat salario[10], x[10]; Declaración

Ejemplo: struct emp En edad se pueden { almacenar hasta 15 valores int id; todos enteros y en salario float salario; 10 valores, todos reales. char sexo; };

struct emp empleado;

Diego Santimateo G.

CRUV-FIEC

Se ha definido un nuevo tipo denominado emp. El área de memoria reservada para él, está dividida en tres partes, una para la variable id, otra para salario y otra para sexo, cada una con un tipo diferente.

Se ha declarado una variable del tipo emp denominada empleado que tiene asociada tres componentes; id, salario y sexo. En cada una de ellas solo se podrá almacenar un valor.

1

Facultad de Informática, Electrónica y Comunicación Inf200 e Inf212 – Estructura de Datos Registro Vs. Vector Aspecto a considerar Nombre [índice] Ejemplo: x = edad[5]; y = salario[6] / 2;

Acceso a los componentes

Vector Estructura Se utiliza el nombre del Nombre.campo Para referirse a un campo vector y entre corchetes de un registro se usa el cuadrados se coloca el nombre de la variable índice que indica la posición Ejemplo: seguida de un punto y luego que se quiere acceder. el nombre del campo. y = empleado.salario / 2 Se usa el campo salario de Se usa el valor que está en la variable empleado. la posición 5 del vector edad y el de la posición 6 de salario.

flotat salario[10], aux[10];

aux [k] = salario [k];

Diego Santimateo G.

CRUV-FIEC

Tenemos dos vectores del struct emp empleado, aux; mismo tipo, por lo cual, la asignación utilizada es perfectamente válida. aux = empleado; A diferencia del registro, cuando se usa un vector no podemos pasar todos los componentes en una sola asignación, se hace necesario un ciclo para lograr ese propósito.

Esta asignación es equivalente a las tres siguientes:

Aquí hemos declarado dos variables del tipo emp. En una asignación estamos pasando los campos de la estructura empleado a la estructura aux, porque son del mismo tipo (emp).

aux.id = empleado.id; Esta asignación implica que aux.salario = empleado.salario; cada campo de empleado aux.sexo = empleado.sexo; será asignado al campo correspondiente de aux.

2

Facultad de Informática, Electrónica y Comunicación Inf200 e Inf212 – Estructura de Datos Registro Vs. Vector Aspecto a considerar Ejemplo: struct emp { int id; float salario; char sexo; char nom[25]; }; struct emp x[100];

Vector Un vector puede contener Ejemplo: una estructura. struct emp En este ejemplo tenemos { un vector x de cien int id; posiciones, cada una de las float salario; cuales contiene una char sexo; estructura, todas sus char nom[25]; posiciones son del tipo }; struct emp y cada una contiene id, salario, sexo y struct emp empleado; nom.

Anidamiento y = x[i].salario / 2; c = x[i].nom[0];

print(“%s”, x[i].nom);

Diego Santimateo G.

CRUV-FIEC

Estructura Una estructura puede contener un vector.

El salario que está en la posición i se divide entre dos y la primera letra del nombre o cadena que está printf(“%c”, empleado.nom[0]); en la posición i se pasa a la variable c, que debe ser tipo char.

En el ejemplo se incluye el vector nom dentro de la estructura emp, por lo tanto será un campo de la variable empleado.

Se despliega la primera letra del nombre del empleado.

Se despliega la variable nom que está en la posición i del vector x.

3