Estructuras Hasta el momento se tiene conocimiento de qué es una variable y un arreglo (unidimensional y bidimensional).

Una variable es un espacio de memoria (estático) en donde se puede guardar un valor de un determinado tipo de dato, dicho valor puede cambiar durante la ejecución de un programa. Por tanto si una variable cambia 5 veces de valor durante la ejecución de un programa, su valor al final será el quinto valor asignado a la misma (ya que solo tiene la capacidad de guardar un solo valor, y cuando se asigna uno nuevo, el anterior se borra para guardar el actual). Por otro lado un arreglo, es una variable que puede guardar más de un solo valor, estos valores pueden guardarse en “casillas”, utilizando una variable de control (índice). Los arreglos pueden tener ser de una dimensión (vectores) o de dos dimensiones (matrices). Sin embargo, cuando se manejan arreglos, independientemente de la dimensión, éste solo puede almacenar un determinado tipo de dato, es decir, si es entero todos sus elementos son enteros, si es decimal todos sus elementos son decimales,… Si es necesario tener en un mismo arreglo diferentes tipos de datos (entero, decimal, carácter…), es decir que tengamos distintos elementos relacionados entre sí como puede ser la información de un estudiante: Nombre, Edad, Sexo, Estado Civil, etc., entonces lo que se debe implementar es un Arreglo de tipo estructura. Para empezar, una estructura (registro) de manera formal es una colección de uno o más elementos (miembro), en donde estos pueden ser de distintos tipos de datos, dicho de otra forma, una estructura es un tipo de dato definido por el usuario en dónde es posible incluir dos o más identificadores de diferentes tipos de datos. Como es un tipo de dato que puede definir el usuario, es necesario especificarlo antes de que pueda ser usado. La sintaxis de una estructura es la siguiente: struct NombreDeLaEstructura { TipoDeDato Variables1; TipoDeDato Variables2; … TipoDeDato VariablesN; }; Se comienza con la palabra reservada struct, la cual nos indica que se va a especificar una variable de tipo estructura, y después tenemos que colocar el identificador con el cual denominaremos a dicha estructura. Entre llaves (cuerpo de la estructura) se tienen que definir los tipos de datos que contendrán la o las variables que tendrá dicha estructura. Y al final, se debe colocar ; en la llave que cierra el bloque de la estructura. Si deseamos implementar una estructura para un trabajador en donde se pueda asignar un número de trabajador (No), el nombre del empleado (nom[100]), su dirección (dir[100]), teléfono (tel), puesto (p[100]), salario por hora (sal), horas trabajadas (hrs) y sueldo total (saltot), la estructura podría ser como sigue a continuación: struct nomina { int No, tel, hrs; char nom[100], dir[100], p[100]; float sal, saltot; };

trab3. p[100].No=1. float sal. trab3. hrs. trab3. trab2. char nom[100]. tel. dir[100]. cin>>trab1.sal*trab1. … } struct nomina { int No. }. hrs. struct nomina { int No. 16000}. trab1. saltot.sal=800. dir[100]. nomina trab1={1. “mecanico”. char nom[100]. si quisiéramos ingresar datos a estas tres variables se puede hacer de 2 formas: 1) Asignando valores iniciales de forma interna. . saltot. 800. char nom[100]. dir[100]. … } Ahora. }. int main() { nomina trab1. tel. p[100].nom=”Jose”. … } 2) Asignado valores iniciales desde teclado. trab2. hrs.hrs. float sal. float sal. trab2. }.No. tel. trab1. int main() { nomina trab1.”Jose”. struct nomina { int No. La cual puede realizarse de dos formas: struct nomina { int No.72240000.saltot=trab1. trab1. int main() { nomina trab1.trab2. dir[100]. cout<<"Escriba el nombre del trabajador ". int main() { nomina trab1. p[100]. p[100].hrs=20. tel.Lo anterior solo define cómo puede ser una variable con esa estructura (aun no ha reservado ningún espacio en la memoria).tel=72240000. trab1. por tanto lo que resta es realizar una declaración de una variable de tipo estructura para nomina. saltot. }. trab2. hrs. trab1. char nom[100]. hrs. float sal. trab3.dir=”Conocido” trab1. saltot. cout<<"Escriba el numero de trabajador ". trab1. struct nomina { int No.p=“mecanico”. dir[100]. tel. float sal. char nom[100]. trab1. trab3.20.”Conocido”. saltot. p[100]. }trab1.

saltot. char nom[100]. cout<<"Escriba las hrs trabajadas del trabajador ". cout<<"Escriba la direccion del trabajador ".saltot. float sal.sal. trab[i].sal*trab1. cin>>trab[i].sal*trab[i]. cout<<"Escriba el salario por hora del trabajador ".hrs. cout<<"Escriba el salario por hora del trabajador ". cin>>trab1. Por tanto. entonces podemos definir una variable de esta estructura pero de tipo vector de 5 elementos: struct nomina { int No.hrs. p[100]. cin>>trab1. cout<<"Escriba el puesto del trabajador ". cin>>trab[i]. se puede definir una variable de tipo vector en donde podamos guardar en una sola variable la cantidad de información necesaria.nom.i<=5.dir.dir.No. hrs. . cin>>trab1. … } Como se puede observar. cin>>trab[i]. Es decir. cin>>trab[i]. trab1. cout<<"Escriba el puesto del trabajador ". cin>>trab[i]. for(i=1.saltot=trab[i]. cout<<"Escriba el nombre del trabajador ".p.cin>>trab1.saltot=trab1. cin>>trab[i].sal.nom. y si no queremos definir 5 variables. cout<<"Escriba las hrs trabajadas del trabajador ". para acceder a los elementos de una estructura se debe escribir el nombre del la estructura seguida del operador punto y finalizando con el nombre del miembro de la estructura (ejemplo: trab1. int i. cout<<"Escriba la direccion del trabajador ". si necesitamos guardar la información de 5 empleados.No). int main() { nomina trab[5]. dir[100]. cout<<"El salario total es: "<<trab1. tel. cin>>trab1.i++){ cout<<"Escriba el numero de trabajador ". Es evidente que para poder llevar diferentes datos para una estructura se tienen que definir un número determinado de variables de acuerdo a la información que se necesite llenar. }.hrs.hrs.p.

cout<<"El salario total es: "<<trab[i].saltot. } … } .