Anda di halaman 1dari 5

UNMSM Facultad de Ingeniera Industrial

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;
}

Anda mungkin juga menyukai