Académique Documents
Professionnel Documents
Culture Documents
PROGRAMACION C++
UNIVERSIDAD PERUANA LOS ANDES
FACULTAD DE INGENIERÍA
ESPECIALIDAD DE INGENIERÍA DE SISTEMAS Y
COMPUTACIÓN
1.1. FUNCIONES
PROGRAMACIÓN MODULAR
La programación modular consiste en dividir un programa en módulos independientes, buscando
un sólo punto de entrada y uno de salida, proporciona módulos funcionales (todos los elementos
contribuyen a una sola tarea) y están organizados en niveles de jerarquía.
DEFINICIÓN DE FUNCIONES
Se compone de la cabecera de la función (prototipo de una función) seguido por el cuerpo de la
función. Cuyo formato es:
<Tipo> Nombre_f (t1 p1, t2 p2,…,tk pk)
{
<cuerpo de la función>
}
Si la función devuelve un valor debe utilizarse la sentencia return cuyo formato es:
return (expresión)
return puede situarse en cualquier punto del cuerpo de la función y provoca la salida inmediata de
la función retornando el valor evaluado en la expresión. Si se omite la expresión, return retorna a
la función que lo llamo y no devuelve ningún valor.
DECLARACIÓN DE PROTOTIPOS
El prototipo de una función tiene por finalidad indicar al compilador el tipo de valor que devuelve,
así como el número y tipo de sus parámetros.
En C++ por cada función definida por el usuario es necesario declarar su prototipo. Uno de sus
formatos es:
<Tipo> Nombre_f (t1 p1, t2 p2,…,tk pk);
Donde:
E1, E2, …,Ek Son expresiones que proporcionan los valores a los
28 parámetros, en el orden indicado.
Ejemplo (01): Programa que imprime los números primos que existen desde 2 hasta 70.
#include <iostream.h>
#include <conio.h>
int primo(int n);
void main( ){
int n;
for(n=2;n<=70;n++)
if (primo(n))
cout<<n<<" es primo \n";
}
int primo(int n){
int r,d=2,flag=1;
while (1){
if (n==2)
break;
r=n%d;//halla el resto de n entre d
if(r==0){
flag=0;
break;
}
if ((n-1)==d)
break;
d++;
}
if (flag) return 1;
else return 0;
}
Ejemplo (02): Programa que utiliza a la función hipotenusa para calcular la hipotenusa de un
triángulo rectángulo si se proporcionan como parámetros los catetos.
#include <iostream.h>
#include <math.h>
float hipotenusa(float ,float );
void main(){
float x,y,h;
cout<<"ingrese los 2 catetos ";cin>>x>>y;
h= hipotenusa(x,y);
cout<<" hipotenusa= "<<h<<"\n";}
float hipotenusa(float a,float b){
28 float hi;
hi=sqrt(a*a+b*b);
return (hi);}
En este método, el compilador no pasa una copia del valor del argumento; en su lugar, pasa una
referencia, que indica a la función donde existe la variable en memoria. La referencia que una
función recibe es la dirección de la variable. Es decir, pasar un argumento o parámetro por
referencia es, simplemente, indicarle al compilador que “que pase la dirección del argumento”.
Un parámetro pasado por referencia siempre tiene que ser una variable.
Ejemplo (03): El siguiente programa intenta cambiar el valor de dos números si el primero es
mayor que el segundo, pero fracasa porque el parámetro pasado es por valor.
#include <iostream.h>
void intercambiar(int x,int y);
void main(){
int x,y;
cout<<"ingrese x: ";cin>>x;
cout<<"ingrese y: ";cin>>y;
if (x>y) intercambiar(x,y);
cout<<" x= "<<x<<" y= "<<y<<"\n";}
void intercambiar(int a,int b){
int aux;
aux=a; a=b; b=aux;}
Ejemplo (04): El siguiente programa si logra intercambiar los valores de las dos variables. Observe
su implementación de la función intercambiar.
28 #include <iostream.h>
void intercambiar(int &x,int &y);
void main(){
int x,y;
cout<<"ingrese x: ";cin>>x;
cout<<"ingrese y: ";cin>>y;
if (x>y) intercambiar(x,y);
cout<<" x= "<<x<<" y= "<<y<<"\n";}
void intercambiar(int &a,int &b){
int aux;
aux=a; a=b; b=aux;}
En el programa se ha definido una variable "n" de tipo int, que puede ser utilizada por cualquier
bloque de la función main(), pero en el siguiente bloque:
if (n>0){
int i,num,s=0;
for(i=1;i<=n;i++){
cout<<"Elemento"<<i<<": ";
cin>>num;
s+=num;
}
cout<<"La suma es :"<<s<<"\n";
}
else
cout<<"Error: Sin ingresos";
28
se ha definido tres variables: i, num y s; que sólo pueden ser usadas dentro de este bloque. En
conclusión el ámbito de "n" es toda la función main(), el ámbito de i, num y s es sólo el bloque de
la sentencia if.
VARIABLES LOCALES
Se dice que un variable es local cuando sólo es conocido en un bloque determinado. Un bloque
comienza con { y termina con }.
#include <iostream.h>
int maximo(int a,int b,int);
void main(){
int a,b,c;
cout<<"Ingrese tres números:";
cin>>n1>>n2>>n3;
cout<<"Máximo : " << maximo(n1,n2,n3);
}
int maximo(int a,int b,int c){
int max;
if(a>b) max=a;
else max=b;
if(c>max) max=c;
return max;
}
Los parámetros reales son los datos que son enviados a la función y son utilizados en la llamada a
la función; por ejemplo: en la llamada a la función máximo los parámetros reales son n1, n2 y n3.
Los parámetros reales tienen que coincidir con el número y el tipo de los parámetros formales,
correspondiendo el primer parámetro real al primer parámetro formal, el segundo parámetro real
al segundo parámetro formal, así sucesivamente.
VARIABLES GLOBALES
Se dice que una variable es global cuando es conocido en más de dos funciones. Es recomendable
minimizar el uso de variables globales porque accidentalmente puede ser modificado por una
función produciendo resultados inesperados.
Ejemplo (0): El programa solicita un ángulo en grados sexagesimales en forma decimal, luego
llama a la función radian() que convierte el ángulo a radianes.
Función radian()
radianes=sexagesimales*(3.1416/180)
28
#include <math.h>
#include <iostream.h>
void sexag(void);
void radian(void);
// Variable global
float angulo;
void main(){
// Variables locales a main()
char resp;
do{
cout<<"Angulo (en sexagesimales): ";
cin>>angulo;
radian();
cout<<"Continuar? (S/N)\n";
cin>>resp;
}while(resp!='N' && resp!='n');
}
void radian(void){
// Variable local a radian()
float rad;
rad=3.1416/180*angulo;
cout<<"En radianes es:"<<rad<<"\n";
}
PROGRAMAS DE APLICACIÓN
Ejemplo (07): Programa que halla la hipotenusa de un triángulo.
#include <iostream.h>
#include <math.h>
void hipotenusa(float a,float b,float &hi);
main(){
float x,y,h;
cout<<"ingrese los 2 catetos ";cin>>x>>y;
hipotenusa(x,y,h);
cout<<" hipotenusa= "<<h<<"\n";
}
// a y b son parámetros pasados por valor y hi es pasado por referencia
void hipotenusa(float a,float b,float &hi){
hi=sqrt(a*a+b*b);
}
Ejemplo (08): La función distancia() calcula la distancia de dos puntos cuyas coordenadas son
(x1,y1) y (x2,y2). La distancia es igual a:
x1 x 2 2 x1 x 2 2
#include <iostream.h>
#include <math.h>
28 double distancia(double,double,double,double);
void main(){
double a1,a2,b1,b2;
cout<<"Coordenadas del primer punto :";
cin>>a1>>b1;
cout<<"Coordenadas del segundo punto :";
cin>>a2>>b2;
cout<<"La distancia es: ";
cout<<distancia(a1,b1,a2,b2)<<"\n";
}
double distancia(double x1, double y1,double x2, double y2){
double x;
x=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
return(x);
}
Ejemplo (09):
#include <iostream.h>
#include<conio.h>
#include<math.h>
float LAdosAngulos(float, float, float);
void main(void){
float a,b,c,alfa;
clrscr();
cout<<"Soluciona un triangulo"<<endl;
cout<<"Caso Lado - angulo - lado"<<endl;
cout<<"Ingrese lado b:";cin>>b;
cout<<"Ingrese lado c";cin>>c;
cout<<"Angulo formado(en rad):";cin>>alfa;
a=LAdosAngulos(b,c,alfa);
cout<<"El tercer lado mide"<<a;
}
float LAdosAngulos(float b,float c,float alfa){
float a;
clrscr();
a=sqrt(b*b+c*c-2/b/c*cos(alfa));
return a;
getch();
}
Ejemplo (10):
#include <iostream.h>
#include<conio.h>
int esprimo(int);
void main (void){
int n;
clrscr();
cout<<"ingrese numero";cin>>n;
28 if(esprimo(n))
cout<<"el numero es primo";
}
int esprimo(int n){
int i=n/2;
clrscr();
while(i>1)
if (n%i==0)
return 0;
i=i-1;
return 1;
getch ();
}
Ejemplo (11):
#include<stdio.h>
#include<conio.h>
long int fibonacci ();
int main (){
int n, i;
clrscr();
printf("\n cuantos n´´umeros de fibonacci ?:");
scanf("%d", &n);
printf("\n secuencia de fibonacci : 0,1");
for (i=2; i<n; i++)
printf (",%ld", fibonacci ());
return 0;
}
long int fibonacci (){
static int x=0;
static int y=1;
y=y+x;
x=y-x;
return y;
getch();
}
Ejemplo (12):
#include<stdio.h>
#include<conio.h>
double media (double x1, double x2){
return(x1+x2)/2;
}
int main (){
double num1, num2, med;
clrscr();
28 printf ("introducir dos numeros reales:");
scanf(" %lf %lf", &num1, &num2);
med = media (num1, num2);
printf("el valor medio es %.41f \n",med);
return 0; getch(); }
Ejemplo (13):
#include <iostream.h>
#include<conio.h>
void tablamult(int,int);
void main(void){
int n,m;
clrscr();
cout<<"cual tabla desea?"; cin>>n;
cout<<"cuantos multiplos desea?"; cin>>m;
tablamult(n,m);
}
void tablamult(int n, int m){
int i;
clrscr();
cout<<"tabla de multiplicar del"<<n<<"*"<<endl;
for (i=1; i<=m; i++)
cout<<i<<"*"<<n<<"="<<i*n<<endl;
getch();
}
Ejemplo (14):
#include<conio.h>
#include<iostream.h>
#include<stdio.h>
void primo(int n);
void main(){
int num;
clrscr();
cout<<"ingrese numero :";cin>>num;
primo(num);
getch();
}
void primo(int numx){
int i,variable;
i=numx/2;
variable=1;
while(i>1){
if(numx%i==0)
variable=0;
i=i-1;
}
28 if (variable==1)
cout<<"el numero es primo";
else
cout<<"el numero no es primo";
getch(); }
Ejemplo (15):
#include<conio.h>
#include<iostream.h>
#include<stdio.h>
void primos(int n);
void main(){
int num,j,i,ct,terlim;
clrscr();
cout<<"INGRESE TERMINO FINAL DE LOS NUMEROS PRIMOS : ";cin>>terlim;
primos(terlim);
getch();
}
void primos(int terlim){
int j,i,ct;
for(j=1;j<=terlim;j++){
ct=0;
for(i=1;i<=j;i++){
if(j%i==0){
ct=ct+1;
}
}
if(ct<=2)
cout<<"\n\n\t"<<i-1<<"\n";
}
getch();
}
Ejemplo (16):
//dessarrollar una función que devuelva el mayor de 5 números
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
float mayor(float a,float b,float c,float d,float e);
void main(){
float a,b,c,d,e,mayornumero;
clrscr();
cout<<"Ingrese 5 numeros separados por un espacio :";
cin>>a>>b>>c>>d>>e;
mayornumero=mayor(a,b,c,d,e);
cout<<"El mayor numero ingresado fue :"
<<mayornumero<<endl;
28 getch();
}
float mayor(float a,float b,float c,float d,float e) {
float auxiliar;
auxiliar=a;
Ing. Zenon Manuel LÓPEZ ROBLES
UPLA
if(auxiliar<b)
auxiliar=b;
if(auxiliar<c)
auxiliar=c;
if(auxiliar<d)
auxiliar=d;
if(auxiliar<e)
auxiliar=e;
return auxiliar;
}
Ejemplo (17):
/*desarrollo de una función que devuelva la suma de los n primeros
numeros enteros*/
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
long sumaenteros(int n);
void main(){
int numero;
long suma;
clrscr();
cout<<"ingrese un numero entero :";cin>>numero;
suma=sumaenteros(numero);
cout<<"\n la suma de los "<<numero
<<" primeros numeros es :"<<suma<<endl;
getch();
}
long sumaenteros(int n){
int suma;
suma=n*(n+1)/2;
return suma;
}
Ejemplo (18):
*declarar una funcion que convierta un numero real que presenta horas ,ahoras
minutos,segundos y decimos de segundos.*/
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
void equivalente(float h,float&m,float&s);
void convierte(float x, int&hor,int&min,int&seg,int&dseg);
28 void sumafibonacci(int n,long&suma);
void main(){
//ejecucion de la funcion equivalente
float minutos,segundos;
clrscr();
equivalente(6,minutos,segundos);
cout<<"\n 6 horas equivalente a"<<minutos<<" minutos "<<endl;
cout<<"\n 6 horas equivalente a"<<segundos<<" segundos "<<endl;
getch();
//otra forma de ejecucion de la funcion equivalente
float horas;
cout<<"\n Ingrese numero de horas :";cin>>horas;
equivalente(horas,minutos,segundos);
cout<<horas<<"horas equivalente a"
<<minutos<<"minutos"<<endl;
cout<<horas<<"horas equivalente a"
<<segundos<<"segundos"<<endl;
getch();
// ejecucion de la funcion equivalente()
int hh,mm,ss,ds;
clrscr();
convierte(18.47,hh,mm,ss,ds);
cout<<"el numero 18.47 representa"
<<hh<<" horas :"<<endl
<<mm<<" minutos :"<<endl
<<ss<<" segundos :"<<endl
<<ds<<" decimos de segundo : "<<endl;
getch();
}
/*otra forma de ejecucion de la funcion convierte
float numero;
cout<<"ingrese un numero :";cin>>numero;
convierte(numero,hh,mm,ss,ds);
cout<<"el numero"<<numero<<"representa"
<<hh<<"horas"<<endl
<<hh<<"minutos"<<endl
<<hh<<"segundos"<<endl
<<hh<<"decimos de segundo"<<endl;
getch();
} */
//desarrollo de las funciones propias
void equivalente(float h,float&m,float&s){
int sxm=60;
int sxh=3600;
m=h*sxm;
s=h*sxh;
}
//desarrollo de la funcion convierte
28
void convierte(float x, int&hor,int&min,int&seg,int&dseg){
hor=int(x);
x =(x-hor)*60;
min=int(x);
x =(x-min)*60;
seg=int(x);
x =(x-seg)*60;
dseg=int(x);
}
Ejemplo (19):
#include<conio.h>
#include<iostream.h>
int suma(int a,int b);
int resta(int a,int b);
int multiplicacion(int a,int b);
float divicion(float a,float b);
void main(){
clrscr();
int x,y,op;
cout<<" MENU PRINCIPAL ";
cout<<"\n 1. suma :";
cout<<"\n 2.resta :";
cout<<"\n 3.multiplicacion:";
cout<<"\n 4.divicion :";
cout<<"\n 5.salir";
cout<<"\n elija opcion .............";cin>>op;
cout<<"INGRESE NUMERO 1 :";cin>>x;
cout<<"INGRESE NUMERO 2 :";cin>>y;
switch(op){
case 1:clrscr();
cout<<"\n suma:"<<suma( x,y);break;
case 2:clrscr();
cout<<"\n resta:"<<resta( x,y);break;
case 3:clrscr();
cout<<"\n multiplicacion:"<<multiplicacion( x,y);break;
case 4:clrscr();
cout<<"\n divicion:"<<divicion(x,y);break;
default:clrscr();
cout<<"\n opcion salir.................... ";break;
}
getch();
}
int suma(int a,int b)
{ int sum;
sum=a+b;
return sum;
28 }
int resta(int a,int b)
{ int rest;
rest=a-b;
return rest;}
int multiplicacion(int a,int b)
{ int multipl;
multipl=a*b;
return multipl;
}
float divicion(float a,float b)
{ float divic;
divic=a/b;
return divic;
}
Ejemplo (20):
//Escribir un programa para hallar la suma y promedio de los N términos de
//la serie de FIBONACCI(usar funciones para cada caso
#include<iostream.h>
#include<conio.h>
#define H 100
float suma(float X[],float M);
float promedio(float X[],float M);
void main()
{float T[H],i,S;
clrscr(),
gotoxy(32,2);
cout<<"PROGRAMA Nø3"<<endl;
cout<<" -------- ---"<<endl;
cout<<endl<<"Ingrese el número de elementos de la serie de FIBONACCI: ";
cin>>S;
//inicializaci¢n siempre en 0 y 1 de los dos primeros elementos
T[0]=0;
T[1]=1;
cout<<endl;
for(i=0;i<S;i++)
{T[i+2]=T[i]+T[i+1];
cout<<T[i]<<"\t";}
suma(T,S);
promedio(T,S);
getch();
}
//funci¢n para hallar la suma de los elementos de la serie
float suma(float X[],float M)
{float i,S=0;
for(i=0;i<M;i++)
S+=X[i];
28
cout<<endl<<endl<<"La suma de los elementos es: "<<S;
return 0;
}
//funci¢n para hallar el promedio de los elementos de la serie
Ejemplo (21):
/*declarar una funcion que determine la suma de los n primeros términos
de la serie fibonacci */
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
void sumafibonacci(int n,long&suma);
void main(){
long sumaserie,terminos;
clrscr();
cout<<"INGRESE CANTIDAD DE TERMINOS :";cin>>terminos;
sumafibonacci(terminos,sumaserie);
cout<<"LA SUMA DE LA SERIE DE FIBONNACCI ES :"<<sumaserie<<endl;
getch();
}
//desarrollo de la funcion fibonacci
void sumafibonacci(int n,long&suma){
unsigned int nactual,nanterior,nsiguiente,cont;
nanterior=0;
nactual=1;
suma=0;
cont=2;
while(cont<=n){
suma+=nactual;
nsiguiente=nanterior=nactual;
nanterior=nactual;
nactual=nsiguiente;
cont++;
}
}
Ejemplo (22):
//Escribir un programa para determinar el mayor, menor, suma, promedio
// y producto de un array de N elementos
28 //Usar una funci¢n para realizar el Ingreso, Reporte, Mayor, Menor, Suma y Promedio
#include<conio.h>
#include<iostream.h>
#define M 100
}
//funci¢n para clacular el menor de los elementos
float menor(float X[],float N)
{float i;
float menor=X[0];
for(i=0;i<N;i++)
{if(menor>X[i])
menor=X[i];}
cout<<endl<<"El menor de los elementos es: "<<menor;
return 0;
}
//funci¢n para calcular la suma de los elementos del arreglo
float suma(float X[],float N)
{float i,S=0;
for(i=0;i<N;i++)
S+=X[i];
cout<<endl<<"La suma de elementos es: "<<S;
return 0 ;
}
//funci¢n para calcular el promedio de los elementos
float promedio(float X[],float N)
{float P,i,S=0;
for(i=0;i<N;i++)
S+=X[i];
P=S/N;
cout<<endl<<"El promedio de los elementos es: "<<P;
return 0;
}
REGISTROS
Frecuentemente en nuestras actividades diarias empleamos datos que guardan alguna relación
entre ellos, por ejemplo si soy un vendedor y tengo la necesidad de ubicar a un cliente
determinado entre los tantos que pueda tener para ofrecerle algún producto, me importaría
determinar quién es mi cliente, lo puedo hacer a través de su nombre, si le asigné un código
también podría identificarlo a través de este, para visitarlo necesito su dirección y si deseo llamarlo
pues necesito su número telefónico; adicionalmente podría también tener otros datos relativos a
este cliente, como podría ser la fecha de su cumpleaños para enviarle una tarjeta, etcétera. Al
juntar todos los datos de este cliente, pues se tiene un conjunto de datos de este cliente, se ha
registrado a este cliente. De igual forma se puede registrar a otros clientes.
Un registro es una colección de datos o campos (código, nombre, dirección, número telefónico,
fecha de nacimiento, etc.) acerca de una entidad (cliente), estos en conjunto pueden ser tratados
como una unidad de información. Cada dato de un cliente (por ejemplo el nombre) es un campo.
28
Los registros en conjunto, uno por cada cliente hace una tabla de datos de la entidad cliente. Si
manejamos adicionalmente tablas de datos acerca de los vendedores, productos, etcétera,
tenemos una Base de Datos.
REPRESENTACIÓN DE REGISTROS
En el C++ para representar los registros empleamos en muchas ocasiones las estructuras y las
uniones. La estructura es básica para la representación de los registros de una tabla de una base
de datos y las uniones en una celda de una hoja de cálculo.
Una estructura a diferencia de un array o arreglo permite mantener datos de distintos tipos. Así
para mantener los registros acerca de los alumnos de una clase donde queramos mantener su
nombre, edad en años y talla; es necesario un arreglo de caracteres para su nombre, un dato tipo
entero para su edad y un dato tipo real para su talla.
char Nombre[20];
int Edad;
float talla;
Una unión permite almacenar diferentes tipos de datos en una misma posición de memoria. Si por
ejemplo tenemos cierto componente electrónico que podamos identificarlo a través de un número
que tiene asignado o a través de su color (para cada color existe un equivalente numérico),
entonces sería lo mismo identificarlo por su color o por su equivalente numérico (sería ilógico
hacerlo por ambos); en consecuencia se puede utilizar una unión para ello, donde empleamos
alternadamente el equivalente numérico o su color, pero no ambos.
ESTRUCTURAS
La estructura es una unidad que agrupa a una o más variables del mismo tipo o de tipos diferentes.
La sintaxis para crear una estructura es la siguiente
struct identificador{
tipo1 miembro1;
tipo2 miembro2;
.
.
tipoN miembroN;
};
Como se puede observar para definir una estructura disponemos de la palabra reservada struct, y
entre llaves se definen todos los miembros de la estructura. Para hacer referencia a un miembro de
una estructura se emplea el punto (.).
struct estalumno{
char nombre[38];
int edad;
float talla;
};
main(){
struct estalumno alumno;
clrscr();
cout<<"Ingrese el nombre: ";
gets(alumno.nombre);
cout<<"\nIngrese la edad (años): ";
cin>>alumno.edad;
cout<<"\nIngrese la talla (metros): ";
cin>>alumno.talla;
clrscr();
cout<<"El alumno "<<alumno.nombre
<<" tiene "<<alumno.edad
<<" años de edad y "
<<"mide "<<alumno.talla
<<" metros";
return 0;
}
El lector debe advertir que a pesar de haber definido la estructura, a la variable alumno se le
asigna el tipo estructura estalumno empleando la palabra struct, así tenemos:
struct estalumno alumno;
La salida será:
El alumno Fidel Fernández tiene 20 años de edad y mide 1.78 metros.
Note que para ingresar la cadena empleamos la función gets(). Esta función permite ingresar una
cadena de caracteres hasta que se ingrese el equivalente a nueva línea (retorno de carro).
UNIONES
28 La unión en una misma posición de memoria de memoria puede almacenar diferentes tipos de
datos, pero en un momento dado puede ser de un solo tipo, el tamaño de la unión es el mismo
que se tiene para el tipo de dato mayor entre los diferentes tipos de la unión.
La sintaxis para crear una unión es la siguiente:
union identificador{
tipo1 ide1;
tipo2 ide2;
.
.
tipoN ideN;
};
Como podemos observar, para definir la unión disponemos de la palabra reservada union, y entre
las llaves se definen todos los tipos alternativos de la unión.
Ejemplo : Desarrolle un programa que demuestre que una unión puede manejar un solo tipo
de dato a la vez. Tome como base para este programa el registro de un
componente electrónico que se puede identificar a través de un número que tiene
asignado o a través de su color (para cada color existe un equivalente numérico),
es lo mismo identificarlo por su color o por su equivalente numérico.
//Registra la identificación de un
//componente empleando una unión
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
union unicomp{
char color[20];
int numero;
};
main(){
union unicomp componente;
clrscr();
cout<<
"Ingrese color del componente: ";
gets(componente.color);
cout<<"\nColor del componente: ";
cout<<componente.color;
cout<<"\nNúmero del componente: ";
cout<<componente.numero;
cout<<
"\n\nIngrese número del componente: ";
cin>>componente.numero;
cout<<"\nColor del componente: ";
cout<<componente.color;
28 cout<<"\nNúmero del componente: ";
cout<<componente.numero;
getch();
return 0;
}
La forma de definir una unión es similar a la de una estructura. Si al programa ingresamos los
siguientes datos tenemos:
Ingrese color del componente: AZUL
A la primera petición de ingreso acerca del color del componente respondemos con la palabra
AZUL, en este caso tenemos la salida correcta para el color y en el caso del número obtenemos un
valor no predecible.
A la segunda petición de ingreso acerca del número del componente respondemos con el número
560, ahora tenemos la salida correcta para el número y en el caso del color obtenemos un valor no
predecible.
Esto es debido a que en un momento dado solo podemos emplear uno de los tipos propuestos
para esta variable.
OPERACIONES CON ESTRUCTURAS
nom_funcion(var_estru);
años y talla de este alumno. Luego el programa debe mostrar los datos de
dicho alumno empleando para ello una función.
struct estalumno{
char nombre[38];
int edad;
float talla;
};
void
impr_alu(struct estalumno cual_alu);
void main(){
struct estalumno alumno;
clrscr();
cout<<"Ingrese el nombre: ";
gets(alumno.nombre);
cout<<"\nIngrese la edad (años): ";
cin>>alumno.edad;
cout<<"\nIngrese la talla (metros): ";
cin>>alumno.talla;
clrscr();
impr_alu(alumno);
}
void
impr_alu (struct estalumno cual_alu){
cout<<"El alumno "<<cual_alu.nombre;
cout<<" tiene "<<cual_alu.edad
<<" años de edad y "
<<"mide "<<cual_alu.talla
<<" metros";
}
nom_funcion(var_estru);
//Registra a un alumno empleando una estructura en una función y la pasa a otra función para su
salida
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
struct estalumno{
char nombre[38];
int edad;
float talla;
};
void main(){
struct estalumno alumno;
clrscr();
ingr_alu(alumno);
clrscr();
impr_alu(alumno);
}
void ingr_alu(struct estalumno &cual_alu){
cout<<"Ingrese el nombre: ";
gets(cual_alu.nombre);
cout<<"\nIngrese la edad (años): "; cin>>cual_alu.edad;
cout<<"\nIngrese la talla (metros): "; cin>>cual_alu.talla;
}
void impr_alu(struct estalumno cual_alu){
28 cout<<"El alumno "<<cual_alu.nombre;
cout<<" tiene "<<cual_alu.edad<<" años de edad y ";
cout<<"mide "<<cual_alu.talla<<" metros";
}
ANIDAMIENTO DE ESTRUCTURAS
Ejemplo : Defina un algoritmo que permita registrar la fecha y hora de nacimiento de una
persona. Respecto a la fecha se desea saber el día, mes y año de nacimiento.
Sobre la hora se desea registrar la hora, los minutos y los segundos.
struct estruFecha {
int dia;
int mes;
int anno;
};
struct estruTiempo {
int hora;
int minuto;
int segundo;
};
struct fechaTiempo{
struct estruFecha LaFecha;
struct estruTiempo ElTiempo;
};
main(){
struct fechaTiempo Nacimiento;
clrscr();
cout<<"Ingrese dia de nacimiento: "; cin>>Nacimiento.LaFecha.dia;
cout<<"Ingrese mes de nacimiento: "; cin>>Nacimiento.LaFecha.mes;
cout<<"Ingrese a¤o de nacimiento: "; cin>>Nacimiento.LaFecha.anno;
cout<<"Ingrese durante que hora nacio: "; cin>>Nacimiento.ElTiempo.hora;
cout<<"Cuantos minutos? "; cin>>Nacimiento.ElTiempo.minuto;
cout<<"Cuantos segundos? "; cin>>Nacimiento.ElTiempo.segundo;
clrscr();
28 cout<<"La fecha de nacimiento es el dia "<<Nacimiento.LaFecha.dia<<"/"
<<Nacimiento.LaFecha.mes<<"/"<<Nacimiento.LaFecha.anno;
cout<<"\nLa hora de nacimiento es: "<<Nacimiento.ElTiempo.hora<<" horas, "
<<Nacimiento.ElTiempo.minuto
ARREGLOS DE REGISTROS
La forma más adecuada de aprovechar las estructuras es empleándolo dentro de arreglos
Para un arreglo de estructuras, se define la variable estructura como un arreglo. Así por ejemplo
tenemos:
struct persona
{ char[10] nom;
float sueldo;
};
main()
{ struct persona empleado[10];
//arreglo de estructuras
//empleado de 10 elementos
.............
}
Se accede a un elemento del arreglo de estructuras usando el índice del arreglo para la variable
empleado y el operador punto (.)
empleado[indice].sueldo=500;
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#define max 10
struct datos
{ char nomb[20]; //nombre
int edad;
};
clrscr();
leer(p);
escribir(p);
}
void leer(struct datos pe[max]){
int i;
for(i=0;i<max;i++)
{ cout << "Ingrese nombre:==> ";
gets(pe[i].nomb);
cout << "Ingrese edad ==> ";
cin >> pe[i].edad;
}
}
void escribir(struct datos pe[max]){
int i;
for(i=0;i<max;i++)
{ cout << "Nombre ==> "
<< pe[i].nomb<<"\n";
cout << "Edad ==> "
<< pe[i].edad<<"\n";
}
}
Advierta como en este programa se leen los registros, como es un arreglo por defecto se tiene que
el paso de parámetros es por variable o referencia.
PROGRAMAS DE APLICACIÓN
EJEMPLO 1 : Escribir un programa que permita registrar a las personas que visitan una
empresa. Se debe registrar el nombre y la edad de la persona; el día, mes y año
de la visita, así como también la hora, minuto y segundos en la que se realizó la
visita. El programa debe mostrar luego un reporte de las visitas.
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#define max 20
struct estruFecha {
int dia;
int mes;
int anno; };
struct estruTiempo {
28 int hora;
int minuto;
int segundo;
};
struct datos