0% encontró este documento útil (0 votos)
90 vistas4 páginas

Práctica Typedefy Struct

El documento presenta ejemplos sobre el uso de estructuras y arreglos en C para almacenar datos. Se definen tipos como Persona y Fecha y se muestran programas para ingresar, ordenar y guardar datos de estas estructuras.

Cargado por

Luis Longo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
90 vistas4 páginas

Práctica Typedefy Struct

El documento presenta ejemplos sobre el uso de estructuras y arreglos en C para almacenar datos. Se definen tipos como Persona y Fecha y se muestran programas para ingresar, ordenar y guardar datos de estas estructuras.

Cargado por

Luis Longo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

Practica sobre typedef y struct

1) Dada la siguiente especificación:

REGISTRO Persona =
ENTERO CI;
CADENA Nombre;
CADENA Apellido;
FREGISTRO

Realice un programa que permita:


a) Definir el tipo Persona
b) Declarar una variable de tipo Persona.
c) Inicializar cada campo del registro con valores leídos por teclado.
d) Imprimir los valores de cada campo del registro.

typedef struct {
int CI;
char Nombre[11];
char Apellido[11];
} PERSONA;

main() {
Persona p;
printf(“introduzca ci”);
scanf(“%d\n”, &[Link]);

printf(“introduzca nombre”);
scanf(“%s”, [Link]);

printf(“introduzca Apellido”);
scanf(“%s”, [Link]);

printf(“Los valores son: CI=%d\n Nombre=%s %s\n”, [Link], [Link], [Link]);


}

2) En base al ejemplo anterior


a) Defina un arreglo de tamaño 10 de tipo Persona.
b) Cargué por teclado valores para todos los elementos
c) Ordene los elementos en forma ascendente por el campo CI
d) Almacene estos datos en un archivo.

#define N 10
main(){
PERSONA p[N];
PERSONA pt;
int i, j;
FILE *f;

for (i = 0; i < N; i++) {


printf(“%d\n”, i);
printf(“\tIntroduzca ci”);
scanf(“%d\n”, &p[i].CI);
printf(“\tIntroduzca nombre”);
scanf(“%s”, p[i].Nombre);
printf(“\tIntroduzca Apellido”);
scanf(“%s”, p[i].apellido);
}
// Ordena usando Buble Sort
for (i = 0 ; i < N – 1; i++) {
for (j = i + 1 ; j < N; j++) {
if (p[i].CI > p[j].CI) {
pt = p[i];
p[i] = p[j];
p[j] = pt;
}
}
}

f = fopen(“[Link]”, “w”);
if (f == null) {
printf(“Error abriendo archivo\n”);
exit(-1);
}

for (i = 0 ; i < N – 1; i++) {


fprintf(f,“%d %s %s \n”, p[i].ci, p[i].Nombre, p[i].Apellido);
}
fclose(f);
}

3) Defina el tipo fecha, haga un programa que lea 10 fechas y las ordene
typedef struct Fecha {
int día;
enum mes {ene,feb,mar,abr,may,jun,jul,ago,sep,oct,nov,dic};
int año;
}TIPO_FECHA;

#define N 10
main() {
TIPO_FECHA fs[N];
TIPO_FECHA ft;
int i;

for (i = 0; i < N; i++) {


printf(“%d\n”, i);
printf(“\tintroduzca dia”);
scanf(“%d\n”, &fs[i].dia);
printf(“\tintroduzca mes”);
scanf(“%d\n”, &fs[i].mes);

// hay que asegurarse que se cumple con el tipo


switch(fs[i].mes) {
case 1:
fs[i].mes = ene;
break;
case 2:
fs[i].mes = feb;
break;
case 3:
fs[i].mes = mar;
break;
case 4:
fs[i].mes = abr;
break;
case 5:
fs[i].mes = may;
break;
case 6:
fs[i].mes = jun;
break;
case 7:
fs[i].mes = jul;
break;
case 8:
fs[i].mes = ago;
break;
case 9:
fs[i].mes = sep;
break;
case 10:
fs[i].mes = oct;
break;
case 11:
fs[i].mes = nov;
break;
case 12:
fs[i].mes = dic;
break;
} // end switch
printf(“\tintroduzca año”);
scanf(“%d\n”, &fs[i].anio);

} //end for

for (i = 0 ; i < N – 1; i++) {


for (j = i + 1 ; j < N; j++) {
if ((fs[i].anio > fs[j].anio) ||
((fs[i].anio == fs[j].anio) && (fs[i].mes > fs[j].mes)) ||
((fs[i].anio == fs[j].anio) && (fs[i].mes == fs[j].mes) &&
(fs[i].dia > fs[j].dia))) {
ft = fs[i];
fs[i] = fs[j];
fs[j] = fst;
}
}
}

printf(“Las fechas ordenadas son:\n”);


for (i = 0 ; i < N – 1; i++) {
printf(“%d /%d /%d \n”, fs[i].dia, fs[i].mes, fs[i].anio);
}

4) Con las siguientes declaraciones, realice trozos de código que respondan lo siguiente:
a) ¿Cuántos empleados mayores de 50 años están divorciados?
b) ¿Cuál es el porcentaje de mujeres casadas?
c) ¿Cuál es porcentaje de empleados solteros?
d) ¿Cuántas mujeres solteras están entre los 20 y 30 años de edad?
#define N 100
typedef enum Estado {Soltero,Casado,Viudo,Divorciado};

typedef struct Empleados {


char Apellido[20],Nombre[20];
int Edad;
enum Sexo {Masculino,Femenino};
char EdoCivil;
}Tipo_Emp;

Empleados Lista_Emp[N];

main() {
Empleados Lista_Emp[N];
…..
int i, numdiv = 0, porCas = 0, porSol=0, sol20a30;
int total_mujeres = 0;
int casadas = 0;
int solteros = 0;

for (i = 0; i < N; i++) {


// Número de empleados mayores de 50 años divorciados

if (Lista_Emp[i].EdoCivil == Divorciado && Lista_Emo[i].Edad > 50)


numdiv++;

// Numero de solteras casadas

if (Lista_Emp[i].Sexo == Femenino) {
total_mujeres++;
if (Lista_Emp[i].EdoCivil == Casado)
casadas++;
}

// Número de solteros

if (Lista_Emp[i].EdoCivil == Soltero)
solteros++;

// Número de solteras entre 20 y 30 anios

if (Lista_Emp[i].Sexo == Femenino && Lista_Emp[i].EdoCivil == Soltero &&


Lista_Emp[i].Edad < 30 && Lista_Emp[i].Edad > 20)
Sol20a30++;

// Porcentaje de casadas
if (total_casadas > 0)
porCas = casadas*100/total_mujeres;

// Porcentaje de solteros
porSol = solteros / N;
}

También podría gustarte