Subido por jacqueline villarroel

ejercicios-resueltos-estructura

Anuncio
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])
Descargar