diseño de algoritmos “estructuras”

12
Diseño de algoritmos “Estructuras” Claudio Gutiérrez-Soto.

Upload: suzy

Post on 21-Jan-2016

79 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Diseño de algoritmos “Estructuras”

Diseño de algoritmos“Estructuras”

Claudio Gutiérrez-Soto.

Page 2: Diseño de algoritmos “Estructuras”

Estructuras

Estructuras AnidadasLas estructuras anidadas corresponden a variables de

tipo estructura dentro de otras estructuras,

Page 3: Diseño de algoritmos “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]; stuct 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 );

}}

Page 4: Diseño de algoritmos “Estructuras”

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

Page 5: Diseño de algoritmos “Estructuras”

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];

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ó}

Page 6: Diseño de algoritmos “Estructuras”

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.

Page 7: Diseño de algoritmos “Estructuras”

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.

Page 8: Diseño de algoritmos “Estructuras”

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(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;

}

Page 9: Diseño de algoritmos “Estructuras”

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*/

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

Page 10: Diseño de algoritmos “Estructuras”

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.

Page 11: Diseño de algoritmos “Estructuras”

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;

}

Page 12: Diseño de algoritmos “Estructuras”

¿Preguntas?