Diseño de algoritmos “Estructuras”
description
Transcript of Diseño de algoritmos “Estructuras”
Diseño de algoritmos“Estructuras”
Claudio Gutiérrez-Soto.
Estructuras
Estructuras AnidadasLas estructuras anidadas corresponden a variables de
tipo estructura dentro de otras estructuras,
EstructurasEstructuras Anidadas
#include<stdio.h>#define N 20#define LARGO 30struct fecha{ int dia; int mes; int anho; };struct Datos{ char Nombre[LARGO]; char Apellido[LARGO]; struct fecha FechaNac; };struct Empleado{ struct Datos DatosPers; float sueldo;}Empleados[N];
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
Dada la estructura#include<stdio.h>#define N 20#define LARGO 30struct 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 30struct 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 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) ) printf(“%d”,Empleados[i].sueldo); else continue;
}
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 30struct 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 30struct 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(){ int i; for(i=0;i<N;i++) if( Empleados[i].sueldo>=700000 ) { 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 estructurastruct 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*/
1) Crear una función que permita ingresar las notas de un determinado curso y ramo
2) Crear una función que calcule el promedio para un determinado curso y ramo.
3) 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 30struct 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;
}
¿Preguntas?