ESTRUCTURA DE DATO FUNDAMENTALES
Introducción a Estructuras
En un arreglo todos los elementos son del mismo tipo
de datos.
T1=10°C
T2=12°C
T3=8°C
T4=20°C
T5=18°C
V1=30Km/h
V2=25Km/h
V3=35Km/h
V4=40Km/h
10 12 8 20 18
TEMP[ ] 30 25 35 40
VELC[ ]
Introducción a Estructuras (2)
Una lista de información, por ejemplo, de estudiantes
contiene elementos tales como:
El nombre, la edad, las notas, semestre, etc.,
Para esto los arreglos no son adecuados.
Nomb= ‘’LUIS’’
Apell= ‘’LOPEZ’’
Edad= 17
NotaInf1= 4.5
NotaCalc1= 4.4
Sem= 1
ESTUDIANTE:
Nomb
Apell
Sem
NotaInf1
NotaCalc1
“Luis” “Lopez” 17 4.5
Nombre Apellido Edad NotaInf1
4.4
NotaCalc1
1
Semestre
ESTUDIANTE
Componentes de una Estructura
Una estructura es una colección de uno o mas tipos
denominados miembros, cada uno de los cuales puede ser de
un tipo de datos diferente.
Ejemplo: Estructura ‘estudiante’
TIPOS DE DATOS
 Cadena de Caracteres max 50
 Cadena de Caracteres max 15
 Numerico Entero
 Numerico Entero
 Numerico Flotante
 Numerico Flotante
MIEMBROS
Nombre
Apellido
edad
Semestre
NotaInf1
NotaCalc1
“Luis” “Lopez” 17 4.5
Nombre Apellido Edad NotaInf1
4.4
NotaCalc1
1
Semestre
ESTUDIANTE
Componentes de una Estructura
• Ejemplo: Estructura ‘CD de musica’
INTRODUCCIÓN
TIPOS DE DATOS
 Cadena de Caracteres max 40
 Cadena de Caracteres max 40
 Cadena de Caracteres max 15
 Numerico entero
 Numerico entero
 Numerico entero
MIEMBROS
– Titulo
– Artista
– Género
– Número Canciones
– Año de lanzamiento
– Precio
ESTRUCTURAS EN C
ESTRUCT. Y C
En C existe un tipo de dato, llamado
“Luis” “Lopez” 17 4.5
Nombre Apellido Edad NotaInf1
4.4
NotaCalc1
1
Semestre
ESTUDIANTE
Se puede utilizar una estructura para almacenar
diferentes tipos de información sobre una persona,
tal como nombre, estado civil, edad, fecha de
nacimiento,…
Declaración de una Estructura
struct nombreDeLaEstructura
{
tipoDeDatoMiembro1 nombreMiembro1;
tipoDeDatoMiembro2 nombreMiembro2;
...
tipoDeDatoMiembroN nombreMiembroN;
} ;
Con la declaración de un estructura estamos
creando un tipo de datos NUEVO y
PERSONALIZADO. Se utiliza la palabra clave
struct
ESTRUCT. Y C
Ejemplo Declaración de Estructura
“Estudiante Informatica1”
DECLARACIÓN
struct nombreDeLaEstructura
{
tipoDeDatoMiembro1 nombreMiembro1;
tipoDeDatoMiembro2 nombreMiembro2;
...
tipoDeDatoMiembroN nombreMiembroN;
} ;
struct estudianteInform1
{
char nombre[50];
char cedula[15];
char email[50];
float notaTeorica;
float notaLab;
int faltas;
} ;
MIEMBROS
Nombre
Cedula
Correo Electrónico
Nota Teória
Nota Laboratorio
Faltas
TIPOS DE DATOS
Cadena de Caracteres max 50
Cadena de Caracteres max 15
Cadena de Caracteres max 50
Numerico flotante
Numerico flotante
Numerico entero.
Ejemplo 2: Declaración de
Estructura “CD de Musica”
DECLARACIÓN
struct cdsMusica
{
char titulo[40];
char artista[40];
char genero[15];
int numCanciones;
int lanzamiento;
int precio;
} ;
MIEMBROS
Titulo
Artista
Género
Número Canciones
Año de lanzamiento
Precio
TIPOS DE DATOS
Cadena de Caracteres max 40
Cadena de Caracteres max 40
Cadena de Caracteres max 15
Numerico entero
Numerico entero
Numerico entero
struct nombreDeLaEstructura
{
tipoDeDatoMiembro1 nombreMiembro1;
tipoDeDatoMiembro2 nombreMiembro2;
...
tipoDeDatoMiembroN nombreMiembroN;
} ;
Ejemplo3: Declaración de
Estructura “numero complejo”
DECLARACIÓN
struct complejo
{
float parte-real;
float parte-imaginaria;
};
struct complejo
{
float parte-real, parte-imaginaria;
};
MIEMBROS
Parte_Real
Parte_Imaginaria
TIPOS DE DATOS
Numerico Flotante
Numerico Flotante
Declarando VARIABLES tipo
estructura
Variables tipo Estructura
Cuando declaramos una estructura solo se está diciendo que
forma tendrá, SE CREA UN NUEVO TIPO DE DATOS.
struct cdsMusica
{
char titulo[40];
char artista[40];
char genero[15];
int numCanciones;
int lanzamiento;
int precio;
};
struct cdsMusica cd1, cd2, cd3;
struct cdsMusica
{
char titulo[40];
char artista[40];
char genero[15];
int numCanciones;
int lanzamiento;
int precio;
} cd1,cd2,cd3; //Se delaran 3 Vbles
Falta instanciar la estructura o simplemente reservarle un
espacio en memoria con un nombre especifico, Se declara
una Variable de este nuevo tipo.
Declarando variables tipo estructura
La declaración de las estructuras se realiza por fuera de las
definiciones de cualquier función.
struct cdsMusica
{
char titulo[40];
char artista[40];
char genero[15];
int numCanciones;
int lanzamiento;
int precio;
};
struct cdsMusica cd1,cd2,cd3; //3 vbles tipo globales
int main(void){
struct cdsMusica cd4,cd5,cd6; //3 Vbles locales
….
}
La declaración de Variables tipo Estructura, mantiene
las normas de la declaración de cualquier otra variable.
struct cdsMusica
{
char titulo[40];
char artista[40];
char genero[15];
int numCanciones;
int lanzamiento;
int precio;
} cd1,cd2,cd3;
int main(void){
struct cdsMusica cd4,cd5,cd6;
….
}
Inicialización de Variables tipo estructura
struct cdsMusica
{
char titulo[40];
char artista[40];
char genero[15];
int numCanciones;
int lanzamiento;
int precio;
};
struct cdsMusica cd1= {
“The Best Of 1980-1990",
“U2",
“Rock” ,
15,
1998,
50000
};
Cuando se declara una variable, se reserva espacio en
memoria.
struct cdsMusica cd1;
…
…
…
…
…
…
cd1 titulo
artista
genero
Num
Canc.
año
Lanza.
precio
Estructuras
Las estructuras permiten definir nuevos tipos de datos.
Una forma de hacerlo es mediante una estructura. Una
estructura define un nuevo tipo de dato que esta
compuesto por una colección de datos de tipos
existentes ya sean tipos básicos o estructurados como
arrays, cadenas de caracteres o estructuras ya
definidas.
La definición de una estructura comienza con la palabra
reservada struct, seguida del nombre del nuevo tipo que
se esta definiendo. A continuación, y encerrados entre
llaves, aparecen los datos que componen el nuevo tipo. A
cada uno de los datos se le llama campo o, en C++,
miembro
La definición de cada campo tiene la estructura de la
definición de una variable, es decir, en primer lugar se
especifica el tipo del campo y a continuación su nombre
Definición de estructura
Una estructura (también llamada registro) es un tipo de datos que
agrupa varios datos de tipo simple en un solo objeto.
Las estructuras se declaran con la palabra reservada struct.
struct
nombre{
campos;
};
Cada campo esta formado por la declaración de una o más variables
de algún otro tipo. Ejemplo:
struct persona{
char nombre[30];
int edad;
};
nombre (cadena) edad (int)
persona
Campos
Características de estructura
• Las estructuras nos permiten agrupar varios
datos, aunque sean de distinto tipo, que
mantengan algún tipo de relación, permitiendo
manipularlos todos juntos, con un mismo
identificador, o por separado.
• Las estructuras son llamadas también muy a
menudo registro y son estructuras como registros
de bases de datos, siguiendo la misma analogía,
cada variable de una estructura se denomina a
menudo campo.
struct
Un struct es un tipo de datos complejo
conformado por un conjunto de campos de otros
tipos (básicos o complejos) asociados a un
identificador:
struct [etiqueta]
{
tipo campo;
tipo campo;
...
}; 5
Ejemplo de alumnos
struct alumno{
int matricula;
char nombre[20];
char carrera[20];
float promedio;
char direccion[20];
};
alumno
matricula nombre carrera promedio direccion
# include <iostream>
# include <string>
using namespace std ;
struct Persona {
string nombre;
int edad ;
} ;
int main () {
Persona p ;
cout <<"Introduzca un nombre : ";
cin >> p . nombre ;
p . edad = 1 ;
cout <<"Datos : n" ;
cout <<"Nombre : " << p . nombre << endl ;
cout <<"Edad : " << p . edad << endl ;
return 0 ;
}
Definición y uso de una estructura. El nombre de la estructura es Persona y
contiene informacion sobre un individuo, en este caso solo dos campos: su
nombre y edad
Ilustrar dos características de las estructuras. La primera es que se puede iniciar una variable
de tipo estructura en el momento de su definición. Para ello vea la definición de p1 en el
programa hay que aportar valores adecuados para los distintos campos de la variable.
La segunda es que se puede utilizar el operador de asignacion para asignar a una variable de
tipo estructura otra estructura del mismo tipo. A partir de la asignación ambas variables
contienen el mismo valor
# include <iostream>
# include <string>
using namespace std ;
struct Persona {
string nombre;
int edad ;
} ;
int main () {
Persona p1 = {" Luis " , 18 } ;
Persona p2 = p1 ;
p2 . edad ++;
cout <<"Datos : n" ;
cout <<"Nombre : " << p2 . nombre <<
endl ;
cout <<"Edad : " << p2 . edad <<
endl ;
return 0;
}
Una estructura anidada es aquella que incluye un
campo de tipo estructura.
Define la estructura anidada Alumno que consta de un
campo, nac, que es a su vez una estructura de tipo
Fecha. Es posible iniciar una estructura anidada en su
definicion, como ocurren con la variable ´ al en el
programa, observe el uso de llaves para especificar los
campos de la estructura nac
Estructuras Anidadas
#include <iostream>
#include <string>
using namespace std;
struct Fecha
{
int dia, mes, anio;
};
struct Alumno
{
string nombre;
Fecha nac;
};
int main()
{
Alumno al = {"Pilar ", {28, 8, 1990}};
cout << "Nombre : " << al.nombre << endl;
cout << "Fecha de nacimiento : " << al.nac.dia <<
"/"
<< al.nac.mes << "/" << al.nac.anio << endl;
return 0;
}
Una estructura de datos que se utiliza con mucha
frecuencia es un vector de estructuras. Mediante un
vector de estructuras se puede representar un conjunto
de entidades de cualquier tipo, por ejemplo, los clientes
de un dentista o los zapatos que se venden en una
zapatería.
Vector de Estructuras
Define un vector con dos estructuras de tipo Alumno
#include <iostream>
#include <string >
using namespace std;
struct Fecha
{
int dia, mes, anio;
};
struct Alumno
{
Fecha nac;
string nombre;
double notas[3];
};
int main()
{
Alumno v[2] = {{{28, 8, 1990}, "Pilar: ", {5, 7, 9}},
{{16, 12, 1991}, "Maria Jose: ", {6.5, 7, 8}}};
for (int i = 0; i < 2; i++)
{
cout << v[i].nombre;
cout << "/" << v[i].nac.dia << "/" << v[i].nac.mes << "/"
<< v[i].nac.anio << "/";
cout << " Notas : " << v[i].notas[0] << " " << v[i].notas[1] << " "
<< v[i].notas[2] << endl;
}
return 0;
}
15
ARREGLOS DE ESTRUCTURAS
ARREGLOS DE ESTRUCTURAS
Supongamos nuestra estructura:
struct usuario
y que deseamos declarar N usuarios, se sucitaria lo
siguiente:
struct usuario{
char nombre[30];
char calle[40];
char cuidad[20];
char region[3];
char fono[7];
int edad;
} user1,user2,..., userN;
Lo cual para acceder a cada variable se traduce en algo
realmente complejo; Para resolver esta complejidad
podemos utilizar un arreglo.
struct usuario{
char nombre[30];
char calle[40]; char
cuidad[20]; char
region[3]; char
fono[7];
int edad;
}user[N];
Por ejemplo:
for(i=0;i<N ;i++)
{
printf("Ingrese el nombre para user[%d] n",i);
gets(user[i].nombre);
}
16
Por lo tanto se puede definir un arreglo de estructuras de la
forma anterior o de la siguiente forma. struct usuario user[N];
lo cual es equivalente (a esta forma de almacenamiento en
memoria principal se le denomina tabla).
Para poder acceder a algun elemento del arreglo, se indica el
nombre del arreglo, el índice del
arreglo y el elemento de la estructura.
ARREGLOS DE ESTRUCTURAS
Tamaño de una estructura
struct
El acceso a los campos de una estructura se hace
por medio de un punto (.) o de una flecha (->) si es
un puntero a estructura.
struct persona el, *ella, todos[20];
printf(“Su nombre %sn”,el.nombre);
todos[2].edad=20;
ella=&todos[2];
printf(“La edad de ella es %dn”,ella->edad);
18
Estructuras y apuntadores
Para acceder a una estructura mediante un apuntador se utiliza la siguiente notación:
(*estructura).campo o estructura->campo
Es necesario crear mediante new la estructura antes de usarla.
Ejemplo:
struct alumno{
int matricula;
char nombre[20];
char carrera[20];
float promedio;
char direccion[20];
};
main(){
alumno *a;
a = new(struct alumno);
(*a).matricula = 234; a->matricula = 234;
strcpy((*a).nombre,"Juan Perez"); strcpy(a->nombre,"Juan Perez");
strcpy((*a).carrera,"Mate");
(*a).promedio = 6.7;
strcpy((*a).direccion,"Lomas 34");
}
Bibliografía
• Joyanes Aguilar, Luis. PROGRAMACIÓN
EN C. Metodología, algoritmos y
estructura de datos Capitulo 9.
• Martinez del Rio Francisco, fundamentos
de programación

Clase-Modelosfsdfsfsafasfasfsasfsasfffs.pptx

  • 1.
    ESTRUCTURA DE DATOFUNDAMENTALES
  • 2.
    Introducción a Estructuras Enun arreglo todos los elementos son del mismo tipo de datos. T1=10°C T2=12°C T3=8°C T4=20°C T5=18°C V1=30Km/h V2=25Km/h V3=35Km/h V4=40Km/h 10 12 8 20 18 TEMP[ ] 30 25 35 40 VELC[ ]
  • 3.
    Introducción a Estructuras(2) Una lista de información, por ejemplo, de estudiantes contiene elementos tales como: El nombre, la edad, las notas, semestre, etc., Para esto los arreglos no son adecuados. Nomb= ‘’LUIS’’ Apell= ‘’LOPEZ’’ Edad= 17 NotaInf1= 4.5 NotaCalc1= 4.4 Sem= 1 ESTUDIANTE: Nomb Apell Sem NotaInf1 NotaCalc1 “Luis” “Lopez” 17 4.5 Nombre Apellido Edad NotaInf1 4.4 NotaCalc1 1 Semestre ESTUDIANTE
  • 4.
    Componentes de unaEstructura Una estructura es una colección de uno o mas tipos denominados miembros, cada uno de los cuales puede ser de un tipo de datos diferente. Ejemplo: Estructura ‘estudiante’ TIPOS DE DATOS  Cadena de Caracteres max 50  Cadena de Caracteres max 15  Numerico Entero  Numerico Entero  Numerico Flotante  Numerico Flotante MIEMBROS Nombre Apellido edad Semestre NotaInf1 NotaCalc1 “Luis” “Lopez” 17 4.5 Nombre Apellido Edad NotaInf1 4.4 NotaCalc1 1 Semestre ESTUDIANTE
  • 5.
    Componentes de unaEstructura • Ejemplo: Estructura ‘CD de musica’ INTRODUCCIÓN TIPOS DE DATOS  Cadena de Caracteres max 40  Cadena de Caracteres max 40  Cadena de Caracteres max 15  Numerico entero  Numerico entero  Numerico entero MIEMBROS – Titulo – Artista – Género – Número Canciones – Año de lanzamiento – Precio
  • 6.
    ESTRUCTURAS EN C ESTRUCT.Y C En C existe un tipo de dato, llamado “Luis” “Lopez” 17 4.5 Nombre Apellido Edad NotaInf1 4.4 NotaCalc1 1 Semestre ESTUDIANTE Se puede utilizar una estructura para almacenar diferentes tipos de información sobre una persona, tal como nombre, estado civil, edad, fecha de nacimiento,…
  • 7.
    Declaración de unaEstructura struct nombreDeLaEstructura { tipoDeDatoMiembro1 nombreMiembro1; tipoDeDatoMiembro2 nombreMiembro2; ... tipoDeDatoMiembroN nombreMiembroN; } ; Con la declaración de un estructura estamos creando un tipo de datos NUEVO y PERSONALIZADO. Se utiliza la palabra clave struct ESTRUCT. Y C
  • 8.
    Ejemplo Declaración deEstructura “Estudiante Informatica1” DECLARACIÓN struct nombreDeLaEstructura { tipoDeDatoMiembro1 nombreMiembro1; tipoDeDatoMiembro2 nombreMiembro2; ... tipoDeDatoMiembroN nombreMiembroN; } ; struct estudianteInform1 { char nombre[50]; char cedula[15]; char email[50]; float notaTeorica; float notaLab; int faltas; } ; MIEMBROS Nombre Cedula Correo Electrónico Nota Teória Nota Laboratorio Faltas TIPOS DE DATOS Cadena de Caracteres max 50 Cadena de Caracteres max 15 Cadena de Caracteres max 50 Numerico flotante Numerico flotante Numerico entero.
  • 9.
    Ejemplo 2: Declaraciónde Estructura “CD de Musica” DECLARACIÓN struct cdsMusica { char titulo[40]; char artista[40]; char genero[15]; int numCanciones; int lanzamiento; int precio; } ; MIEMBROS Titulo Artista Género Número Canciones Año de lanzamiento Precio TIPOS DE DATOS Cadena de Caracteres max 40 Cadena de Caracteres max 40 Cadena de Caracteres max 15 Numerico entero Numerico entero Numerico entero struct nombreDeLaEstructura { tipoDeDatoMiembro1 nombreMiembro1; tipoDeDatoMiembro2 nombreMiembro2; ... tipoDeDatoMiembroN nombreMiembroN; } ;
  • 10.
    Ejemplo3: Declaración de Estructura“numero complejo” DECLARACIÓN struct complejo { float parte-real; float parte-imaginaria; }; struct complejo { float parte-real, parte-imaginaria; }; MIEMBROS Parte_Real Parte_Imaginaria TIPOS DE DATOS Numerico Flotante Numerico Flotante
  • 11.
    Declarando VARIABLES tipo estructura Variablestipo Estructura Cuando declaramos una estructura solo se está diciendo que forma tendrá, SE CREA UN NUEVO TIPO DE DATOS. struct cdsMusica { char titulo[40]; char artista[40]; char genero[15]; int numCanciones; int lanzamiento; int precio; }; struct cdsMusica cd1, cd2, cd3; struct cdsMusica { char titulo[40]; char artista[40]; char genero[15]; int numCanciones; int lanzamiento; int precio; } cd1,cd2,cd3; //Se delaran 3 Vbles Falta instanciar la estructura o simplemente reservarle un espacio en memoria con un nombre especifico, Se declara una Variable de este nuevo tipo.
  • 12.
    Declarando variables tipoestructura La declaración de las estructuras se realiza por fuera de las definiciones de cualquier función. struct cdsMusica { char titulo[40]; char artista[40]; char genero[15]; int numCanciones; int lanzamiento; int precio; }; struct cdsMusica cd1,cd2,cd3; //3 vbles tipo globales int main(void){ struct cdsMusica cd4,cd5,cd6; //3 Vbles locales …. } La declaración de Variables tipo Estructura, mantiene las normas de la declaración de cualquier otra variable. struct cdsMusica { char titulo[40]; char artista[40]; char genero[15]; int numCanciones; int lanzamiento; int precio; } cd1,cd2,cd3; int main(void){ struct cdsMusica cd4,cd5,cd6; …. }
  • 13.
    Inicialización de Variablestipo estructura struct cdsMusica { char titulo[40]; char artista[40]; char genero[15]; int numCanciones; int lanzamiento; int precio; }; struct cdsMusica cd1= { “The Best Of 1980-1990", “U2", “Rock” , 15, 1998, 50000 }; Cuando se declara una variable, se reserva espacio en memoria. struct cdsMusica cd1; … … … … … … cd1 titulo artista genero Num Canc. año Lanza. precio
  • 23.
  • 24.
    Las estructuras permitendefinir nuevos tipos de datos. Una forma de hacerlo es mediante una estructura. Una estructura define un nuevo tipo de dato que esta compuesto por una colección de datos de tipos existentes ya sean tipos básicos o estructurados como arrays, cadenas de caracteres o estructuras ya definidas.
  • 25.
    La definición deuna estructura comienza con la palabra reservada struct, seguida del nombre del nuevo tipo que se esta definiendo. A continuación, y encerrados entre llaves, aparecen los datos que componen el nuevo tipo. A cada uno de los datos se le llama campo o, en C++, miembro La definición de cada campo tiene la estructura de la definición de una variable, es decir, en primer lugar se especifica el tipo del campo y a continuación su nombre
  • 26.
    Definición de estructura Unaestructura (también llamada registro) es un tipo de datos que agrupa varios datos de tipo simple en un solo objeto. Las estructuras se declaran con la palabra reservada struct. struct nombre{ campos; }; Cada campo esta formado por la declaración de una o más variables de algún otro tipo. Ejemplo: struct persona{ char nombre[30]; int edad; }; nombre (cadena) edad (int) persona Campos
  • 27.
    Características de estructura •Las estructuras nos permiten agrupar varios datos, aunque sean de distinto tipo, que mantengan algún tipo de relación, permitiendo manipularlos todos juntos, con un mismo identificador, o por separado. • Las estructuras son llamadas también muy a menudo registro y son estructuras como registros de bases de datos, siguiendo la misma analogía, cada variable de una estructura se denomina a menudo campo.
  • 28.
    struct Un struct esun tipo de datos complejo conformado por un conjunto de campos de otros tipos (básicos o complejos) asociados a un identificador: struct [etiqueta] { tipo campo; tipo campo; ... }; 5
  • 29.
    Ejemplo de alumnos structalumno{ int matricula; char nombre[20]; char carrera[20]; float promedio; char direccion[20]; }; alumno matricula nombre carrera promedio direccion
  • 30.
    # include <iostream> #include <string> using namespace std ; struct Persona { string nombre; int edad ; } ; int main () { Persona p ; cout <<"Introduzca un nombre : "; cin >> p . nombre ; p . edad = 1 ; cout <<"Datos : n" ; cout <<"Nombre : " << p . nombre << endl ; cout <<"Edad : " << p . edad << endl ; return 0 ; } Definición y uso de una estructura. El nombre de la estructura es Persona y contiene informacion sobre un individuo, en este caso solo dos campos: su nombre y edad
  • 31.
    Ilustrar dos característicasde las estructuras. La primera es que se puede iniciar una variable de tipo estructura en el momento de su definición. Para ello vea la definición de p1 en el programa hay que aportar valores adecuados para los distintos campos de la variable. La segunda es que se puede utilizar el operador de asignacion para asignar a una variable de tipo estructura otra estructura del mismo tipo. A partir de la asignación ambas variables contienen el mismo valor # include <iostream> # include <string> using namespace std ; struct Persona { string nombre; int edad ; } ; int main () { Persona p1 = {" Luis " , 18 } ; Persona p2 = p1 ; p2 . edad ++; cout <<"Datos : n" ; cout <<"Nombre : " << p2 . nombre << endl ; cout <<"Edad : " << p2 . edad << endl ; return 0; }
  • 32.
    Una estructura anidadaes aquella que incluye un campo de tipo estructura. Define la estructura anidada Alumno que consta de un campo, nac, que es a su vez una estructura de tipo Fecha. Es posible iniciar una estructura anidada en su definicion, como ocurren con la variable ´ al en el programa, observe el uso de llaves para especificar los campos de la estructura nac Estructuras Anidadas
  • 33.
    #include <iostream> #include <string> usingnamespace std; struct Fecha { int dia, mes, anio; }; struct Alumno { string nombre; Fecha nac; }; int main() { Alumno al = {"Pilar ", {28, 8, 1990}}; cout << "Nombre : " << al.nombre << endl; cout << "Fecha de nacimiento : " << al.nac.dia << "/" << al.nac.mes << "/" << al.nac.anio << endl; return 0; }
  • 36.
    Una estructura dedatos que se utiliza con mucha frecuencia es un vector de estructuras. Mediante un vector de estructuras se puede representar un conjunto de entidades de cualquier tipo, por ejemplo, los clientes de un dentista o los zapatos que se venden en una zapatería. Vector de Estructuras
  • 37.
    Define un vectorcon dos estructuras de tipo Alumno #include <iostream> #include <string > using namespace std; struct Fecha { int dia, mes, anio; }; struct Alumno { Fecha nac; string nombre; double notas[3]; }; int main() { Alumno v[2] = {{{28, 8, 1990}, "Pilar: ", {5, 7, 9}}, {{16, 12, 1991}, "Maria Jose: ", {6.5, 7, 8}}}; for (int i = 0; i < 2; i++) { cout << v[i].nombre; cout << "/" << v[i].nac.dia << "/" << v[i].nac.mes << "/" << v[i].nac.anio << "/"; cout << " Notas : " << v[i].notas[0] << " " << v[i].notas[1] << " " << v[i].notas[2] << endl; } return 0; }
  • 38.
    15 ARREGLOS DE ESTRUCTURAS ARREGLOSDE ESTRUCTURAS Supongamos nuestra estructura: struct usuario y que deseamos declarar N usuarios, se sucitaria lo siguiente: struct usuario{ char nombre[30]; char calle[40]; char cuidad[20]; char region[3]; char fono[7]; int edad; } user1,user2,..., userN; Lo cual para acceder a cada variable se traduce en algo realmente complejo; Para resolver esta complejidad podemos utilizar un arreglo. struct usuario{ char nombre[30]; char calle[40]; char cuidad[20]; char region[3]; char fono[7]; int edad; }user[N];
  • 39.
    Por ejemplo: for(i=0;i<N ;i++) { printf("Ingreseel nombre para user[%d] n",i); gets(user[i].nombre); } 16 Por lo tanto se puede definir un arreglo de estructuras de la forma anterior o de la siguiente forma. struct usuario user[N]; lo cual es equivalente (a esta forma de almacenamiento en memoria principal se le denomina tabla). Para poder acceder a algun elemento del arreglo, se indica el nombre del arreglo, el índice del arreglo y el elemento de la estructura. ARREGLOS DE ESTRUCTURAS
  • 40.
    Tamaño de unaestructura
  • 41.
    struct El acceso alos campos de una estructura se hace por medio de un punto (.) o de una flecha (->) si es un puntero a estructura. struct persona el, *ella, todos[20]; printf(“Su nombre %sn”,el.nombre); todos[2].edad=20; ella=&todos[2]; printf(“La edad de ella es %dn”,ella->edad); 18
  • 42.
    Estructuras y apuntadores Paraacceder a una estructura mediante un apuntador se utiliza la siguiente notación: (*estructura).campo o estructura->campo Es necesario crear mediante new la estructura antes de usarla. Ejemplo: struct alumno{ int matricula; char nombre[20]; char carrera[20]; float promedio; char direccion[20]; }; main(){ alumno *a; a = new(struct alumno); (*a).matricula = 234; a->matricula = 234; strcpy((*a).nombre,"Juan Perez"); strcpy(a->nombre,"Juan Perez"); strcpy((*a).carrera,"Mate"); (*a).promedio = 6.7; strcpy((*a).direccion,"Lomas 34"); }
  • 43.
    Bibliografía • Joyanes Aguilar,Luis. PROGRAMACIÓN EN C. Metodología, algoritmos y estructura de datos Capitulo 9. • Martinez del Rio Francisco, fundamentos de programación