Академический Документы
Профессиональный Документы
Культура Документы
ALGORITMOS Y PROGRAMACION
Mag. Hilmar Hinojosa Lazo 1
ESTRUCTURAS
Una estructura ( registro ) es un tipo definido por el usuario en base a otros tipos de datos
con el objeto de reunir informacin relacionada entre s.
Ejemplo:
Juan 19 1.73 M
nombre
(cadena)
edad
(int)
talla
(float)
sexo
(char)
Cada componente de la estructura se denomina campo.
Declaracin de una estructura
struct nombre
{
tipo1 campo1 ;
tipo2 campo2 ;
tipoN campoN ;
};
Ejemplo:
struct persona
{
char nombre[10];
int edad;
float talla;
char sexo;
};
Como una estructura es un tipo de dato, se puede crear variables de dicho tipo.
Ejemplo:
persona p1, p2, p3;
Es posible inicializar una estructura al momento de su declaracin.
Ejemplo:
persona p1 = { Maria , 23 , 1.67 , F };
Acceso a los campos de una estructura
Para acceder a los campos de una variable tipo estructura debe seguirse la siguiente
sintaxis:
UNMSM Facultad de Ingeniera Industrial
ALGORITMOS Y PROGRAMACION
Mag. Hilmar Hinojosa Lazo 2
variable tipo estructura . campo
Ejemplo: persona p1,p2;
strcpy( p1.nombre, Juan );
p1.edad =19;
p1.talla =1.73;
p1.sexo =M;
gets(p2.nombre);
cin>>p2.edad;
cin>>p2.talla;
cin>>p2.sexo;
cout<<p1.nombre;
cout<<p1.edad;
cout<<p1.talla;
cout<<p1.sexo;
NOTA: Son incorrectas las siguientes instrucciones:
cout<<p1;
cin>>p1;
Es posible realizar asignaciones entre variables del mismo tipo de estructura.
variable 1 tipo estructura = variable 2 tipo estructura ;
Ejemplo:
persona p1,p2;
strcpy(p1.nombre,Juan);
p1.edad =19;
p1.talla =1.73;
p1.sexo =M;
p2=p1;
la instruccin p2 = p1; es equivalente a:
strcpy(p2.nombre, p1.nombre);
p2.edad = p1.edad;
p2.talla = p1.talla;
p2.sexo = p1.sexo;
UNMSM Facultad de Ingeniera Industrial
ALGORITMOS Y PROGRAMACION
Mag. Hilmar Hinojosa Lazo 3
Arreglo de estructuras
tipo estructura nombre de arreglo[ # elementos ];
Ejemplo:
persona alumnos[5];
Ejemplo de programa con estructuras
Programa que permite ingresar las coordenadas de dos puntos del plano, calcula e imprime
la distancia entre ellos.
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
struct punto
{
int x;
int y;
};
int main()
{
punto p1,p2;
double d;
cout<<"Ingrese coordenadas del primer punto: ";
cin>>p1.x>>p1.y;
cout<<"Ingrese coordenadas del segundo punto: ";
cin>>p2.x>>p2.y;
d = sqrt( pow( p1.x-p2.x , 2 ) + pow( p1.y-p2.y , 2 ) );
cout<<"La distancia entre los puntos es "<<d<<endl;
system("PAUSE");
return 0;
}
UNMSM Facultad de Ingeniera Industrial
ALGORITMOS Y PROGRAMACION
Mag. Hilmar Hinojosa Lazo 4
Ejemplo de programa con estructuras
Programa que permite ingresar el nombre, sexo, estado civil y edad de N personas, imprime
el promedio de edad de aquellas que tienen el mismo sexo que la persona ms joven.
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
const int N = 10;
struct persona
{
char nombre[10];
char sexo;
char ecivil;
int edad;
};
void ingresadatos( persona arrper[N] )
{
int i;
char c;
for(i=0;i<N;i++)
{
cout<<"Ingrese datos de la persona "<<i+1<<endl;
cout<<"Nombre : ";
gets(arrper[i].nombre);
cout<<"Sexo : ";
cin>>arrper[i].sexo;
cout<<"Est.civil: ";
cin>>arrper[i].ecivil;
cout<<"Edad : ";
cin>>arrper[i].edad;
}
}
void imprimedatos( persona per )
{
cout<<"Nombre : "<<per.nombre<<endl;
cout<<"Sexo : "<<per.sexo<<endl;
cout<<"Estado civil: "<<per.ecivil<<endl;
cout<<"Edad : "<<per.edad<<endl;
}
UNMSM Facultad de Ingeniera Industrial
ALGORITMOS Y PROGRAMACION
Mag. Hilmar Hinojosa Lazo 5
int posmasjoven( persona arrper[N] )
{
int i, menor, posmenor;
posmenor = 0;
menor = arrper[0].edad;
for(i=1;i<N;i++)
if ( arrper[i].edad < menor )
{
menor = arrper[i].edad;
posmenor = i;
}
return posmenor;
}
int promedad( persona arrper[N], int pmj )
{
int i, cont, sedad ;
cont = 0;
sedad = 0;
for(i=0;i<N;i++)
if ( arrper[i].sexo == arrper[pmj].sexo )
{
cont++;
sedad = sedad + arrper[i].edad;
}
return sedad / cont;
}
int main()
{
persona arrper[N];
int pmj,pe;
ingresadatos(arrper);
pmj = posmasjoven(arrper);
cout<<endl<<"Datos de la persona mas joven"<<endl;
imprimedatos(arrper[pmj]);
pe = promedad ( arrper, pmj );
cout<<endl<<"El promedio de edad de las personas del
mismo sexo que la mas joven es "<<pe<<endl;
system("PAUSE");
return 0;
}