lOMoARcPSD|14194719 Ejercicios resueltos estructura Programación en C (Universidad Nacional de Asunción) StuDocu is not sponsored or endorsed by any college or university Downloaded by jacqueline villarroel ([email protected]) lOMoARcPSD|14194719 4. En el ejercicio 2 utilizar la clausura typedef para crear un alias de struct persona y definir una función para la carga de datos y otra que despliegue los datos. 1 #include <stdlib.h> 2 #include <stdio.h> 3 #define MAX 3 4 int respuesta, ii; 5 6 struct persona { 7 int edad; 8 char nombre[20]; 9 int matricula; 10 }; 11 /*Se utiliza la clausura tipedef para definir Persona*/ 12 typedef struct persona Persona; 13 /*Prototipo de funciones para cargar y desplegar datos*/ 14 void cargar(int max, Persona *punt); 15 void desplegar(int max, Persona *punt); 16 17 int main () 18 { 19 /*Definicion del vector alumnos de tipo Persona*/ 20 Persona alumnos[MAX]; 21 /*Llamada a funciones*/ 22 cargar(MAX,alumnos); 23 desplegar (MAX,alumnos); 24 25 printf("\n\n\n"); 26 system("pause"); 27 return (0); 28 } 29 /*Primera función*/ 30 void cargar(int max, Persona *punt){ 31 int ii; 32 /*Ciclo para cargar datos*/ 33 for (ii=0; ii<max ; ii++){ 34 printf("Ingrese los datos para la %da persona.\n ", ii+1); 35 printf("Ingrese la Edad: \t"); 36 scanf("%d", &(*(punt + ii)).edad); 37 printf("\n Ingrese Nombre: \t"); 38 fflush(stdin); 39 scanf("%s", &punt[ii].nombre); 40 printf("\n Ingrese la Matricula: \t"); 41 scanf("%d", &punt[ii].matricula); 42 }/*Fin del ciclo*/ 43 } 44 void desplegar(int max, Persona *punt ){ 45 int ii; 46 /*Ciclo para imprimir*/ 47 for (ii=0; ii<max ; ii++){ 48 printf("\n Datos de la %da persona: ", ii+1); 49 printf("Edad %3d ", (*(punt + ii)).edad); 50 printf(" Nombre %10s ", (*(punt + ii)).nombre); 51 printf(" Matricula %5d\n", (*(punt + ii)).matricula); 52 }/*Fin del ciclo*/ 53 } Downloaded by jacqueline villarroel ([email protected]) lOMoARcPSD|14194719 5. Agregar un archivo cabecera denominado alum_obj, en el cual tendremos la constante utilizada, el tipo de datos alumno y las funciones para cargar y desplegar el vector. PAGINA PRINCIPAL main.c 1 #include <stdlib.h> 2 #include <stdio.h> 3 #include "alum_obj.h"/*Inclusion del archivo cabecera*/ 4 #define MAX 3 5 6 int main () 7{ 8 /*Definicion del vector alumnos de tipo Persona*/ 9 Persona alumnos[MAX]; 10 /*Llamada a funciones*/ 11 cargar(MAX,alumnos); 12 desplegar (MAX,alumnos); 13 14 printf("\n\n\n"); 15 system("pause"); 16 return (0); 17 } ARCHIVO alum_obj.c 1 #include <stdio.h> 2 #include "alum_obj.h" 3 4 /*Primera función*/ 5 void cargar(int max, Persona *punt){ 6 int ii; 7 /*Ciclo para cargar datos*/ 8 for (ii=0; ii<max ; ii++){ 9 printf("Ingrese los datos para la %da persona.\n ", ii+1); 10 printf("Ingrese la Edad: \t"); 11 scanf("%d", &(*(punt + ii)).edad); 12 printf("\n Ingrese Nombre: \t"); 13 fflush(stdin); 14 scanf("%s", &punt[ii].nombre); 15 printf("\n Ingrese la Matricula: \t"); 16 scanf("%d", &punt[ii].matricula); 17 }/*Fin del ciclo*/ 18 } 19 20 /*Segunda funcion*/ 21 void desplegar(int max, Persona *punt ){ 22 int ii; 23 /*Ciclo para imprimir*/ 24 for (ii=0; ii<max ; ii++){ 25 printf("\n Datos de la %da persona: ", ii+1); 26 printf("Edad %3d ", (*(punt + ii)).edad); 27 printf(" Nombre %10s ", (*(punt + ii)).nombre); Downloaded by jacqueline villarroel ([email protected]) lOMoARcPSD|14194719 28 printf(" Matricula %5d\n", (*(punt + ii)).matricula); 29 }/*Fin del ciclo*/ 30 } ARCHIVO CABECERA alum_obj.h 1 /*Declaracion de variables*/ 2 int respuesta, ii; 3 4 /*Declaracion de la estructura*/ 5 struct persona { 6 int edad; 7 char nombre[20]; 8 int matricula; 9 }; 10 11 /*Se utiliza la clausura tipedef para definir Persona*/ 12 typedef struct persona Persona; 13 14 /*Prototipo de funciones para cargar y desplegar datos*/ 15 void cargar(int max, Persona *punt); 16 void desplegar(int max, Persona *punt); Downloaded by jacqueline villarroel ([email protected]) lOMoARcPSD|14194719 9. Definir una estructura que contenga nombre, cedula y fecha de nacimiento y un vector con dicho tipo de datos. Definir una función a través de la cual se agregue un nuevo elemento en forma ascendente por fecha de nacimiento. Definir un menú con la estructura de control dowhile que contenga las opciones: a. Carga atómica, controlar fin de vector. b. Despliegue de datos cargados en el vector (con función). c. Salir del programa. d. El tipo de datos y las funciones debe estar en un archivo cabecera. PAGINA PRINCIPAL main.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "funciones.h" 4 #define TAM 100 5 6 int main() 7{ 8 Persona v1[TAM]; 9 int i,j,opcion; 10 i = 0; 11 do{ 12 printf("\nMenu de opciones."); 13 printf("\n1. Cargar datos. "); 14 printf("\n2. Desplegar datos. "); 15 printf("\n3. Salir. \n"); 16 scanf("%d",&opcion); 17 18 switch(opcion){ 19 case 1 : 20 i = agregar(v1,TAM,i); 21 break; 22 case 2: 23 desplegar(i,v1); 24 break; 25 case 3: 26 system("pause"); 27 break; 28 } 29 }while(opcion != 3); 30 31 return 0; 32 } Downloaded by jacqueline villarroel ([email protected]) lOMoARcPSD|14194719 ARCHIVO CABECERA funciones.h 1 struct persona{ 2 char nombre[50]; 3 char cedula[10]; 4 char fecha_nacimiento[15]; 5 }; 6 7 typedef struct persona Persona; 8 9 int agregar(Persona v1[],int tam,int i); 10 void desplegar(int i,Persona v1[]); ARCHIVO funciones.c 1 #include <stdio.h> 2 #include "funciones.h" 3 4 int agregar(Persona v1[],int tam,int i){ 5 int opcion; 6 do{ 7 printf("Ingrese nombre de la persona: "); 8 scanf("%s",v1[i].nombre); 9 printf("\nIngrese numero de cedula: "); 10 scanf("%s",v1[i].cedula); 11 printf("\nIngrese fecha de nacimiento: "); 12 scanf("%s",v1[i].fecha_nacimiento); 13 14 printf("\n¿Quiere seguir cargando datos? \n1.SI\n0.NO\n"); 15 scanf("%d",&opcion); 16 i++; 17 }while(opcion != 0 && i<tam); 18 return i; 19 } 20 void desplegar(int i,Persona v1[]){ 21 int j; 22 for (j=0 ; j<i ; j++){ 23 printf("\t\tPersona Nro %d\n",j+1); 24 printf("\nNombre: %s",v1[j].nombre); 25 printf("\nCedula: %s",v1[j].cedula); 26 printf("\nFecha de Nacimiento: %s\n",v1[j].fecha_nacimiento); 27 } 28 } Downloaded by jacqueline villarroel ([email protected])