Вы находитесь на странице: 1из 3

Ctedra: INFORMTICA (C.C.A.) 1cuat.

Ao 2014
Entregado: 13/6/14
Fecha Presentacin: 21/6/14
Presentacin: Grupal e impresa

Univ.Nac.de Salta Fac.de Ingeniera - NJH

ESTRUCTURAS
DECLARACION DE ESTRUCTURAS
As como los arrays son organizaciones secuenciales de variables simples, de un mismo tipo,
resulta necesario en mltiples aplicaciones, agrupar variables de distintos tipos en una sola
entidad. Este sera el caso, si quisiramos generar la variable " legajo personal ", y ella
quisiramos incluir variables del tipo: strings para el nombre y apellido, int para la edad y
nmero de cdigo postal, float para el sueldo, y as siguiendo. Existe en C++ en tipo de
variable compuesta, para manejar sta situacin tpica de las Bases de Datos, llamada
ESTRUCTURA. No hay limitaciones en el tipo ni cantidad de variables que pueda contener una
estructura, con una sla salvedad: una estructura no puede contenerse a s misma como
miembro.
Para usarlas, se deben seguir dos pasos. Primero hay que declarar la estructura en s, esto es,
darle un nombre y describir a sus miembros, para finalmente declarar a una ms variables,
del tipo de la estructura declarada, veamos un ejemplo:
// Declaracin de la estructura y sus miembros.
struct legajo
{
int
edad ;
char nombre[50] ;
float sueldo ;
} ;
// Declaracin de dos variables del tipo legajo.
legajo vendedor , programador;

En la primer sentencia se crea un tipo de estructura, mediante la palabra reservada "struct",


luego se le d un nombre "legajo" y finalmente, entre llaves se declaran cada uno de sus
miembros, pudiendo estos ser de cualquier tipo. La nica restriccin es que no haya dos
miembros con el mismo nombre, aunque s pueden coincidir con el nombre de otra variable
simple, (o de un miembro de otra estructura), declaradas en otro lugar del programa. Esta
sentencia es slo una declaracin, es decir que no asigna lugar en la memoria para la
estructura, slo le avisa al compilador como tendr que manejar a dicha memoria para alojar
variables del tipo struct legajo.
En la segunda sentencia se definen dos variables del tipo de la estructura legajo, y se reserva
memoria para ambas.
Las dos sentencias pueden combinarse en una sola, dando la definicin a continuacin de la
declaracin:
struct legajo
{
int
edad ;
char nombre[50] ;
float sueldo ;
} vendedor, programador;

// Edad del empleado.


// Nombre del empleado de hasta 50 caracteres.
// Sueldo mensual del empleado.

Las variables del tipo de una estructura, pueden ser inicializadas en su definicin, as por
ejemplo se podra escribir:
struct legajo
{
int
edad ;
char nombre[50] ;
float sueldo ;
} vendedor = {40, "Juan Jos", 1200.50}; programador = {23, "Carlos Manuel", 2000.0};

Ac se utilizaron las dos modalidades de declaracin de variables, inicializndolas a ambas.


1/3

Ctedra: INFORMTICA (C.C.A.) 1cuat. Ao 2014


Entregado: 13/6/14
Fecha Presentacin: 21/6/14
Presentacin: Grupal e impresa

Univ.Nac.de Salta Fac.de Ingeniera - NJH

REGLAS PARA EL USO DE ESTRUCTURAS


Lo primero que debemos estudiar es el mtodo para dirigirnos a un miembro particular de una
estructura. Para ello existe un operador que relaciona al nombre de ella con el de un miembro,
este operador se representa con el punto ( . ) , as se podr referenciar a cada uno de los
miembros como variables individuales. La sintaxis para realizar sta referencia es:
nombre_de_la_estructura.nombre_del_miembro

As podremos escribir por ejemplo, las siguientes sentencias:


// Declaracin de la estructura y sus miembros.
struct posicin
{
float eje_x ;
// Coordenada X de la posicin del elemento.
float eje_y ;
// Coordenada Y de la posicin del elemento.
}
// Declaracin de dos variables del tipo posicin.
posicin finrecta , iniciorecta;
// Asignaciones de valores.
iniciorecta.eje_x=5.0;
iniciorecta.eje_y=5.0;
finrecta.eje_x = 10.0 ;
finrecta.eje_y = 50.0 ;
// Comparacin.
if( finrecta.eje_x == iniciorecta.eje_x )
...

Es muy importante recalcar que, dos estructuras, aunque sean del mismo tipo, no pueden ser
asignadas comparadas la una con la otra, en forma directa, sino asignando comparndolas
miembro a miembro. Esto se muestra claramente en las lneas siguientes, basadas en las
declaraciones anteriores:
finrecta = iniciorecta ;
if( finrecta >= iniciorecta );

// ERROR.
// ERROR.

// FORMA CORRECTA DE ASIGNAR UNA ESTRUCTURA A OTRA.


finrecta.eje_x = iniciorecta.eje_x ;
finrecta.eje_y = iniciorecta.eje_y ;
// FORMA CORRECTA DE COMPARA UNA ESTRUCTURA CON OTRA.
if( (finrecta.eje_x >= iniciorecta.eje_x) && (finrecta.eje_y >= iniciorecta.eje_y)

Las estructuras pueden anidarse, es decir que una ms de ellas pueden ser miembro de otra.
Las estructuras tambin pueden ser pasadas a las funciones como parmetros, y ser
retornadas por stas, como resultados.
ASIGNACION DE VALORES POR TECLADO
Tambin pueden ser inicializadas en tiempo de ejecucin:
// Declaracin de la estructura y sus miembros.
struct legajo
{
int
edad ;
// Edad del empleado.
char nombre[50] ;
// Nombre del empleado de hasta 50 caracteres.
float sueldo ;
// Sueldo mensual del empleado.
}

2/3

Ctedra: INFORMTICA (C.C.A.) 1cuat. Ao 2014


Entregado: 13/6/14
Fecha Presentacin: 21/6/14
Presentacin: Grupal e impresa

Univ.Nac.de Salta Fac.de Ingeniera - NJH

int main() // Funcin Principal del programa.


{
// Declaracin de dos variables del tipo legajo.
legajo vendedor, programador;
// Asignacin de valores a la estructura vendedor.
cout<<Ingrese edad, nombre y sueldo del vendedor:;
cin>>vendedor.edad;
cin>>vendedor.nombre;
cin>>vendedor.sueldo;
// Asignacin de valores a la estructura vendedor.
cout<<Ingrese edad, nombre y sueldo del programador:;
cin>>programador.edad;
cin>>programador.nombre;
cin>>programador.sueldo;

ARRAYS DE ESTRUCTURAS
Podemos agrupar estructuras ordenadamente como elementos de un array. Veamos un
ejemplo:
// Declaracin de la estructura y sus miembros.
struct item
{
char
material[50] ; // Descripcin del tem de hasta 50 caracteres.
int
existencia ;
// Existencia tems en depsito.
float
costo_unitario ; // Costo de compra por unidad del tem.
};

A continuacin definiremos un array de 100 elementos llamado stock, donde cada uno de ellos ser una
estructura del tipo tem, y les asignaremos valores:
#include<iostream>
using namespace std;
int main()
// Funcin Principal del programa.
{
item stock[100] ;
// Vector stock de tipo tem.
int n;
// Tamao del vector ingresado por el usuario.
int i;
// Indice del vector.
cout<<Ingrese la cantidad de tems (Max.100):;
cin>>n;
for(i=1; i<=n; i++)
{
cout<<Material del tem <<i<< : ;
cin>>stock[i].material;
cout<<Existencia del tem <<i<< : ;
cin>>stock[i].existencia;
cout<<Costo unitario del tem <<i<< : ;
cin>>stock[i].costo_unitario;
}

3/3

Вам также может понравиться