Curso de C++ (Página 12b)

pagina012a Principal pagina013a

CAPITULO 12b Tipos de variables III: Estructuras

Asignación de estructuras:

La asignación de estructuras está permitida, pero sólo entre variables del mismo tipo de estructura, salvo que se usen constructores, y funciona como la intuición dice que debe hacerlo.

Veamos un ejemplo:

struct Punto { 
   int x, y; 
   Punto() {x = 0; y = 0;} 
} Punto1, Punto2;
 
int main() { 
   Punto1.x = 10; 
   Punto1.y = 12; 
   Punto2 = Punto1; 
}

La línea:

Punto2 = Punto1; 

equivale a:

Punto2.x = Punto1.x; 
Punto2.y = Punto1.y; 

Arrays de estructuras:

La combinación de las estructuras con los arrays proporciona una potente herramienta para el almacenamiento y manipulación de datos.

Ejemplo:

struct Persona { 
   char Nombre[65]; 
   char Direccion[65]; 
   int AnyoNacimiento; 
} Plantilla[200]; 

Vemos en este ejemplo lo fácil que podemos declarar el array Plantilla que contiene los datos relativos a doscientas personas.

Podemos acceder a los datos de cada uno de ellos:

cout << Plantilla[43].Direccion; 

O asignar los datos de un elemento de la plantilla a otro:

Plantilla[0] = Plantilla[99]; 

Estructuras anidadas:

También está permitido anidar estructuras, con lo cual se pueden conseguir superestructuras muy elaboradas.

Ejemplo:

struct stDireccion { 
   char Calle[64]; 
   int Portal; 
   int Piso; 
   char Puerta[3]; 
   char CodigoPostal[6]; 
   char Poblacion[32]; 
};
 
struct stPersona { 
   struct stNombre { 
      char Nombre[32]; 
      char Apellidos[64]; 
   } NombreCompleto; 
   stDireccion Direccion; 
   char Telefono[10]; 
};
... 

En general, no es una práctica corriente definir estructuras dentro de estructuras, ya que resultan tener un ámbito local, y para acceder a ellas se necesita hacer referencia a la estructura más externa.

Por ejemplo para declarar una variable del tipo stNombre hay que utilizar el operador de acceso (::):

stPersona::stNombre NombreAuxiliar; 

Sin embargo para declarar una variable de tipo stDireccion basta con declararla:

stDireccion DireccionAuxiliar; 

Ejercicios:

  1. Escribir un programa que almacene en un array los nombres y números de teléfono de 10 personas. El programa debe leer los datos introducidos por el usuario y guardarlos en memoria. Después debe ser capaz de buscar el nombre correspondiente a un número de teléfono y el teléfono correspondiente a una persona. Ambas opciones deben se accesibles a través de un menú, así como la opción de salir del programa. El menú debe tener esta forma, más o menos:

a) Buscar por nombre

b) Buscar por número de teléfono

c) Salir

Pulsa una opción:


pagina012a Principal pagina013a