Las estructuras, en ingles structs, son agrupaciones de variables, normalmente propiedades, de cualquier tipo que forman un grupo.
Con el fin de entender mejor lo que es una estructura, una estructura muy común en los programas de gestion sería «persona», que esa persona es una agrupación de datos, como el nombre, dni, edad, telefono, direccion…
Todas estas características definen a una persona y podemos tratar con todas estas características (variables) sin importar el tipo de dato del que se trate bajo un mismo identificador, en este caso «persona».
Sintaxis:
struct «NombreEstructura» {
«TipoDeDato» «nombre»;
«TipoDeDato» «nombre»:
etc.}
Ejemplo
Para mostrarles un ejemplo de programa con estructuras usaremos la estructura «persona» que había comentado anteriormente.
Este programa pedirá el número de personas que insertaremos y una vez establecido ese número nos irá pidiendo el nombre, el sexo y la edad de cada persona.
Una vez introducidos estos parámetros el programa nos mostrará el nombre y la edad de aquellas mujeres que sean mas jóvenes que el hombre (ya introducido) más joven.
(El programa esperará que introduzcamos como mínimo un hombre sino no mostrará ningún resultado)
Necesitamos la librería <string.h> ya que usaremos un string para los nombres y la librería <vector> ya que lo que necesitaremos es un vector de estructuras.
¿Porque un vector de estructuras?
Las estructuras como he dicho es una agrupación de variables, en este caso 3, pero para hacer este ejercicio necesitaremos 3 variables por persona introducida. Por ello haremos un vector de n personas.
#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
Una vez incluidas las librerías crearemos la estructura
struct Persona {
string nombre;
bool mujer;
int edad;
};
En el main crearemos nuestro programa (recordad que podemos dividir en funciones y procedimientos nuestros programas)
int main (){
int n;
cin >> n; // Introducimos la variable n (numero de personas)vector <Persona> v(n); // creamos el vector de estructuras «Persona»
string gen; // El string gen servirá para introducir el genero y activar o no el booleano
int hmin=0; // hmin sera la variable que guarde la edad del hombre mas joven
for(int i=0;i<n;++i){ //bucle para introducir los datos al vectorcin >> v[i].nombre;
cin >> gen;
cin >> v[i].edad;
if(gen == «mujer»){ // Comprueba el genero para poner mujer a true o falsev[i].mujer=true;
}
else{ // si no es mujer significa que es hombre por lo tanto mujer = falsev[i].mujer=false;
if(hmin>v[i].edad or hmin ==0){ //comprueba y su la edad con la mínima.hmin=v[i].edad; // si es mas joven asigna la edad a la variable hmin
}
}
}
for(int i=0;i<n;++i){ // imprimeif(v[i].mujer and v[i].edad < hmin){
cout << v[i].nombre << » » <<v[i].edad <<endl;
}
}
}
En el código del programa podéis ver los comentarios con su funcionamiento aún así el funcionamiento del programa es el siguiente:
- Empezamos por incluir las librerías y crear la estructura con los datos que queremos saber.
- Declaramos las variables:
- n -> número de personas
- gen -> género (sexo)
- hmin -> edad mínima de los hombres.
- v(n) -> vector de estructuras «Persona»
- Una vez declaradas estas variables insertaremos los datos de cada persona en el vector, durante este proceso trataremos el género convirtiendo lo que nosotros introducimos como texto en un valor booleano y obtendremos la edad del hombre más joven.
- Una vez introducidos todos los valores solo debemos recorrer el vector e imprimir solo las mujeres de edad inferior al hombre más joven (hmin).
Este tutorial consta de diferentes elementos como son los vectores, los bucles y otros elementos de la programación; si te has perdido en alguna parte, recomiendo que te leas los apartados anteriores del curso de programación.