Title: Dise
1Diseño de algoritmosEstructuras
Claudio Gutiérrez-Soto.
2Estructuras
- Estructuras Anidadas
- Las estructuras anidadas corresponden a variables
de tipo estructura dentro de otras estructuras,
3Estructuras
- Estructuras Anidadas
- includeltstdio.hgt
- define N 20
- define LARGO 30
- struct fecha
- int dia
- int mes
- int anho
-
- struct Datos
- char NombreLARGO
- char ApellidoLARGO
- stuct fecha FechaNac
-
- struct Empleado
- struct Datos DatosPers
- float sueldo
- EmpleadosN
main() int i for(i0iltNi)
printf(Ingrese el nombre para el empleado
d\n,i) gets(Empleadosi.DatosPers.Nombre)
printf(Ingrese el apellido para el
empleado d\n,i) gets(Empleadosi.DatosPer
s.Apellido) printf(Ingrese la fecha de
nacimiento dd/mm/aa para el empleado d\n,i)
scanf(d,d,d,Empleadosi.DatosPers.FechaNac
.dia, ,Empleadosi.DatosPers.FechaNac.mes,
,Empleadosi.DatosPers.FechaNac.anho )
4Estructuras
Dada la estructura includeltstdio.hgt define N
20 define LARGO 30 struct fecha int
dia int mes int anho
struct Datos char NombreLARGO
char ApellidoLARGO stuct fecha
FechaNac struct Empleado struct Datos
DatosPers float sueldo EmpleadosN
Crear una función que muestre el sueldo para
una persona, dado el nombre y el apellido
5Estructuras
Dada la estructura includeltstdio.hgt define N
20 define LARGO 30 struct fecha int
dia int mes int anho
struct Datos char NombreLARGO
char ApellidoLARGO stuct fecha
FechaNac struct Empleado struct Datos
DatosPers float sueldo EmpleadosN
float Sueldo(char Nombre ,char Apellido)
int i for(i0iltNi)
if(!strcmp(Nombre,Empleadosi.DatosPers.Nombre)
!strcmp(Apellido,Empleadosi.DatosPer
s.Apellido) )
return(Empleadosi.sueldo) else
continue return(-1) // nunca lo encontró
6Funciones para cadenas
- strcpy(str2,str1) Copia str1 en str2
- strcmp(str1,str2) Compara dos cadenas str1 y
str2. Si str1str2 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.
7Estructuras
Dada la estructura includeltstdio.hgt define N
20 define LARGO 30 struct fecha int
dia int mes int anho
struct Datos char NombreLARGO
char ApellidoLARGO stuct fecha
FechaNac struct Empleado struct Datos
DatosPers float sueldo EmpleadosN
Crear una función que muestre a todas las
personas que poseen un sueldo mayor o igual a
700.000.
8Estructuras
Dada la estructura includeltstdio.hgt define N
20 define LARGO 30 struct fecha int
dia int mes int anho
struct Datos char NombreLARGO
char ApellidoLARGO stuct fecha
FechaNac struct Empleado struct Datos
DatosPers float sueldo EmpleadosN
void MostrarSueldo(float Sueldo_) int i
for(i0iltNi) if(Sueldo_ gt
Empleadosi.sueldo )
printf(Nombre s,Empleadosi.DatosPers.Nombre)
printf(Apellido s,Empleadosi.Da
tosPers.Apellido) printf(Sueldo
f,Empleadosi.sueldo)
printf(\n) else continue
9Estructuras
Dada la estructura struct Curso char
CodCurso3 char NombreCurso20 Class10
// cursos del colegio/ struct Ramos char
CodRamo5 char NombreRamo30 char
Cod_curso20 Ramos_Curso50 /5 ramos por
curso/ struct Notas char Rut12 float
N1 float N2 float N3 float
promedio char Cod_Ramo5 char
Cod_Curso3 Notas_Ramo_Curso500
- struc DatosPersonales
- char rut12
- char nombre20
- char Direccion30
- int telefono
- char cod_curso3
- ALUMNOS100 / 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
10Estructuras
- 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.
11Estructuras
Dada la estructura includeltstdio.hgt define N
20 define LARGO 30 struct fecha int
dia int mes int anho
struct Datos char NombreLARGO
char ApellidoLARGO stuct fecha
FechaNac struct Empleado struct Datos
DatosPers float sueldo EmpleadosN
void ModificarFecha(struct fecha FechaMod,char
Nombre,char Apellido) int i
for(i0iltNi) if(!strcmp(Empleadosi.Dat
osPers.Nombre) !strcmp(Empleadosi.DatosPers.A
pellido) )
Empleadosi.DatosPers.FechaNacFechaMod
else continue
12Preguntas?