Sei sulla pagina 1di 1

UNIONES }

} while(op!='3');
Una unión es una variable que puede contener, en }
momentos diferentes, objetos de diferentes tipos y
tamaños, y el compilador hace seguimiento del tamaño y void altas (struct comun vector[], int *cont)
requisitos de alineación. Las uniones proporcionan una { if (*cont ==max)
forma de manipular diferentes clases de datos dentro de { printf("Vector Lleno");
una sola área de almacenamiento, sin incluir en el getch();
programa ninguna información dependiente de la }
máquina. Las uniones pueden presentarse dentro de else
estructuras y arreglos y viceversa. La notación para tener { clrscr();
acceso a un miembro de una unión es idéntica a la de las printf("Nombre: "); gets(vector[*cont].nom);
printf("Matricula: "); gets(vector[*cont].matri);
estructuras anidadas. Es responsabilidad del programador printf("Carrera: L/I: ");
llevar el registro del tipo que está almacenado vector[*cont].carrera=toupper(getche() );
actualmente en una unión; si algo se almacena como un
tipo y se recupera como otro, el resultado depende de la if (vector[*cont].carrera =='L')
implementación. { printf("Costos: ");
scanf("%d",&vector[*cont].dif.lic.costos);
Ejemplo: printf("Contabilidad: ");
scanf("%d", &vector[*cont].dif.lic.conta);
#include<conio.h> }
#include<stdio.h> else
#include<ctype.h> { printf("Circuitos Digitales I: ");
#define max 40 scanf("%d", vector[*cont].dif.ing.dig);
printf("Fisica: ");
struct licenciado scanf("%d", &vector[*cont].dif.ing.fis);
{ int costos; }
int conta; (*cont)++;
}; }
}
struct ingeniero
{ int fis; void mostrar (struct comun vector[], int cont)
int dig; { int I;
};
if (cont == 0 )
union diferentes { printf("No hay datos"); getch(); }
{ struct ingeniero ing; else
struct licenciado lic; { clrscr();
}; for (i=0; i<cont; i++)
{ clrscr();
struct comun printf("Nombre: %s", vector[i].nom );
{ char nom[40]; printf("\nMatricula: %s" ,vector[i].matri);
char matri[10]; printf("\nCarrera: L/I: %c",vector[i].carrera );
char carrera; if (vector[i].carrera == 'L')
union diferentes dif; { printf("\nCarrera: Lic. en Sist. Comp.");
}; printf("\nCostos:%d",vector[i].dif.lic.costos);
printf("\nContabilidad: %d",vector[i].dif.lic.conta);
void altas ( struct comun vector[ ], int * cont); }
void mostrar(struct comun vector[ ], int cont); else
{ printf("\nCarrera: Ingeniero en Computacion");
void main() printf("\nCirc. Dig.: %d", vector[i].dif.ing.dig);
{ printf("\nFisica: %d", vector[i].dif.ing.fis);
struct comun todos[max]; }
char op; getch();
int cont=0; }
do }
{ clrscr(); }
puts("1) Altas");
puts("2) Mostrar");
puts("3) Salida");
printf("Opcion: ");
op=getch();
switch(op)
{ case '1': altas(todos,&cont); break;
case '2': mostrar(todos,cont); break;

M.I. Alma Leticia Palacios Guerrero


Uniones.doc