120 likes | 331 Views
Diseño de algoritmos “Estructuras”. Claudio Gutiérrez-Soto. Estructuras. Estructuras Anidadas Las estructuras anidadas corresponden a variables de tipo estructura dentro de otras estructuras,. Estructuras. main() { int i; for(i=0;i<N;i++) {
E N D
Diseño de algoritmos“Estructuras” Claudio Gutiérrez-Soto.
Estructuras Estructuras Anidadas Las estructuras anidadas corresponden a variables de tipo estructura dentro de otras estructuras,
Estructuras main() { int i; for(i=0;i<N;i++) { printf(“Ingrese el nombre para el empleado %d\n”,i); gets(Empleados[i].DatosPers.Nombre); printf(“Ingrese el apellido para el empleado %d\n”,i); gets(Empleados[i].DatosPers.Apellido); printf(“Ingrese la fecha de nacimiento dd/mm/aa para el empleado %d\n”,i); scanf(%d,%d,%d”,&Empleados[i].DatosPers.FechaNac.dia, ”,&Empleados[i].DatosPers.FechaNac.mes, ”,&Empleados[i].DatosPers.FechaNac.anho ); } } Estructuras Anidadas #include<stdio.h> #define N 20 #define LARGO 30 struct fecha{ int dia; int mes; int anho; }; struct Datos{ char Nombre[LARGO]; char Apellido[LARGO]; stuct fecha FechaNac; }; struct Empleado{ struct Datos DatosPers; float sueldo; }Empleados[N];
Estructuras Dada la estructura #include<stdio.h> #define N 20 #define LARGO 30 struct fecha{ int dia; int mes; int anho; }; struct Datos{ char Nombre[LARGO]; char Apellido[LARGO]; stuct fecha FechaNac; }; struct Empleado{ struct Datos DatosPers; float sueldo; }Empleados[N]; Crear una función que muestre el sueldo para una persona, dado el nombre y el apellido
Estructuras Dada la estructura #include<stdio.h> #define N 20 #define LARGO 30 struct fecha{ int dia; int mes; int anho; }; struct Datos{ char Nombre[LARGO]; char Apellido[LARGO]; stuct fecha FechaNac; }; struct Empleado{ struct Datos DatosPers; float sueldo; }Empleados[N]; float Sueldo(char Nombre [],char Apellido[]) { int i; for(i=0;i<N;i++) if(!strcmp(Nombre,Empleados[i].DatosPers.Nombre) && !strcmp(Apellido,Empleados[i].DatosPers.Apellido) ) return(Empleados[i].sueldo); else continue; return(-1); // nunca lo encontró }
Funciones para cadenas • strcpy(str2,str1): Copia str1 en str2 • strcmp(str1,str2): Compara dos cadenas str1 y str2. Si str1=str2 entonces retorna 0. • strlen(str1): devuelve un entero que va a ser el largo de srt1. • strcat(str1,str2): concatena el string str2 al final del string str1.
Estructuras Dada la estructura #include<stdio.h> #define N 20 #define LARGO 30 struct fecha{ int dia; int mes; int anho; }; struct Datos{ char Nombre[LARGO]; char Apellido[LARGO]; stuct fecha FechaNac; }; struct Empleado{ struct Datos DatosPers; float sueldo; }Empleados[N]; Crear una función que muestre a todas las personas que poseen un sueldo mayor o igual a $700.000.
Estructuras Dada la estructura #include<stdio.h> #define N 20 #define LARGO 30 struct fecha{ int dia; int mes; int anho; }; struct Datos{ char Nombre[LARGO]; char Apellido[LARGO]; stuct fecha FechaNac; }; struct Empleado{ struct Datos DatosPers; float sueldo; }Empleados[N]; void MostrarSueldo(float Sueldo_) { int i; for(i=0;i<N;i++) if(Sueldo_ >= Empleados[i].sueldo ) { printf(“Nombre: %s”,Empleados[i].DatosPers.Nombre); printf(“Apellido: %s”,Empleados[i].DatosPers.Apellido); printf(“Sueldo: %f”,Empleados[i].sueldo); printf(“\n”); } else continue; }
Estructuras Dada la estructura struct Curso{ char CodCurso[3]; char NombreCurso[20]; }Class[10]; // cursos del colegio/ struct Ramos{ char CodRamo[5]; char NombreRamo[30]; char Cod_curso[20]; }Ramos_Curso[50]; /*5 ramos por curso*/ struct Notas{ char Rut[12]; float N1; float N2; float N3; float promedio; char Cod_Ramo[5]; char Cod_Curso[3]; }Notas_Ramo_Curso[500]; struc DatosPersonales{ char rut[12]; char nombre[20]; char Direccion[30]; int telefono; char cod_curso[3]; }ALUMNOS[100]; /* Alumnos del colegio*/ • Crear una función que permita ingresar las notas de un determinado curso y ramo • Crear una función que calcule el promedio para un determinado curso y ramo. • Crear una función que muestre a los alumnos de un curso, para un determinado ramo y que cumplen con una calificación mínima
Estructuras También es posible hacer asignaciones directas de una variable estructura a otra, esto debido a que sus miembros se ubican en posiciones contiguas de memoria.
Estructuras Dada la estructura #include<stdio.h> #define N 20 #define LARGO 30 struct fecha{ int dia; int mes; int anho; }; struct Datos{ char Nombre[LARGO]; char Apellido[LARGO]; stuct fecha FechaNac; }; struct Empleado{ struct Datos DatosPers; float sueldo; }Empleados[N]; void ModificarFecha(struct fecha FechaMod,char Nombre,char Apellido[]) { int i; for(i=0;i<N;i++) if(!strcmp(Empleados[i].DatosPers.Nombre) && !strcmp(Empleados[i].DatosPers.Apellido) ) { Empleados[i].DatosPers.FechaNac=FechaMod; } else continue; }