Ir al contenido principal

Programación en c++: Struct de arreglos - Ordenar por fecha de nacimiento

1. Hacer un programa que permita ingresar n cantidad de trabajadores, incluyendo codigo, nombre, apellido, día, mes y año de nacimiento; y debe imprimir una lista de los trabadores ordenados por fecha de nacimiento.





#include<iostream.h>
#include<string.h>
#include<conio.h>

#define MAX 50
struct fecha
 {
  char dia[3];
  char mes[3];
  char annio[5];

 };
struct trabajador
 {
  char codigo[9];
  char nombre[MAX];
  char apellido[MAX];
  struct fecha fecnac;

 };

 void leerpersonal(int,struct trabajador[]) ;
 void ordenaxfecha(int,struct trabajador[]) ;
 void listado(int,struct trabajador[]) ;
 int bBinariafecha(int,struct trabajador[],struct fecha) ;
 void main(void)
 {int n,pos ;
struct fecha f;                                                                              
struct trabajador x[MAX] ;
 clrscr();
 cout<<"nro de trabajadores:" ;cin>>n ;
 leerpersonal(n,x) ;
 ordenaxfecha(n,x) ;
 listado(n,x) ;
 cout<<"ingrese fecha a busca"<<endl ;
 cout<<"dia:" ;cin>>f.dia ;
 cout<<"mes:" ;cin>>f.mes ;
 cout<<"annio:" ;cin>>f.annio ;
 pos=bBinariafecha(n,x,f) ;
 if(pos==-1)cout<<"no se encuentra";
 else cout<<"lo encontre en la posicion"<<pos;

 getch();
 }


 void leerpersonal(int n,struct trabajador x[])
 {for(int i=0;i<n;i++)
 {cout<<"codigo:";cin>>x[i].codigo;
 cout<<"apellido:";cin>>x[i].apellido;
 cout<<"nombre:";cin>>x[i].nombre;
 cout<<"dia nacimiento:";cin>>x[i].fecnac.dia;
 cout<<"mes nacimiento:";cin>>x[i].fecnac.mes;
 cout<<"annio nacimiento:";cin>>x[i].fecnac.annio;
 cout<<endl;
 }
}
 void ordenaxfecha(int n,struct trabajador x[])
 {struct trabajador temp;
 char f1[9],f2[9];
 for(int i=1;i<n;i++)
 for(int j=n-1;j>=1;j--)
 {strcpy(f1,"");strcpy(f2,"");
 strcat(f1,x[j-1].fecnac.annio);
 strcat(f1,x[j-1].fecnac.mes);
 strcat(f1,x[j-1].fecnac.dia);
 strcat(f2,x[j].fecnac.annio);
 strcat(f2,x[j].fecnac.mes);
 strcat(f2,x[j].fecnac.dia);
if(strcmp(f1,f2)>0)
{temp=x[j-1];
x[j-1]=x[j];
x[j]=temp;

}
}
}
void listado(int n,struct trabajador x[])
{cout<<endl<<"listado de empleados.-"<<endl;
for(int i=0;i<n;i++)
cout<<x[i].codigo<<"\t"<<x[i].apellido<<"\t"
<<x[i].nombre<<"\t"<<x[i].fecnac.dia
<<"/"<<x[i].fecnac.mes<<"/"<<x[i].fecnac.annio
<<endl;
cout<<endl;
}
int bBinariafecha(int n,struct trabajador x[],struct fecha f)
{char f1[9],f2[9];
int izq=0,der=n-1,mitad;
while(izq<=der)
{mitad=(izq+der)/2;
strcpy(f1,"");strcpy(f2,"");
strcat(f1,f.annio);
strcat(f1,f.mes);
strcat(f1,f.dia);
strcat(f2,x[mitad].fecnac.annio);
strcat(f2,x[mitad].fecnac.mes);
strcat(f2,x[mitad].fecnac.dia);
if(strcmp(f1,f2)>0)izq=mitad+1;
else if(strcmp(f1,f2)<0)der=mitad-1;
else return mitad;
}
return -1;
}

Comentarios

Entradas más populares de este blog

Programación en c++ : Matriz - Calcular mayor de la matriz

1.- Hacer un programa que permita ingresar n datos de una matriz y calcular el mayor de la matriz. #include<iostream.h> #include<conio.h> #define lim 50 void main() {int i,j,a[lim][lim],fila,col,  may=a[0][0];  clrscr(); do {cout<<"Ingresar limite de la fila:";  cin>>fila; }while(fila<=0); do {cout<<"Ingesar limite de la columna:";  cin>>col; }while(col<=0); gotoxy(10,7); cout<<"Ingresar Elementos de la matriz\n\n"; for(i=0;i<fila;i++) for(j=0;j<col;j++) {cout<<"a["<<i<<"]"<<"["<<j<<"]";  cin>>a[i][j]; } for(i=0;i<fila;i++) for(j=0;j<col;j++) if(a[i][j]>may) may=a[i][j]; clrscr(); gotoxy(10,7); cout<<"Elementos de la matriz\n\n"; for(i=0;i<fila;i++) for(j=0;j<col;j++) {cout<<a[i][j];  cout<<"\n"; } clrscr(); gotoxy(10,20); cout...

Mostrar y Modificar una tabla en Netbeans

Continuando con el ejercicio anterior, ahora veremos como modificar una tabla creada en SLQ Server  desde Netbeans. Para ello sólo adicionaremos algunos códigos, en este caso siguiendo con el ejercicio anterior sólo agregamos en el index.jsp lo siguiente: <td align="center"><a href ="frmProductos.jsp?txtpara=M&txtid = <%= objpro.getcodigo() %>"><img src="images/upd.gif"></a></td> En el java class Productos, aparte de crear el método mostrar, crearemos dos métodos más: Método para Buscar y para Modificar, pero primero antes de todo declaramos nuestras variables como privado, creamos un constructor y luego aplicamos un Getter and Setter como se muestra en las siguientes imágenes:   Después de haber hecho el paso anterior, creamos un nuevo jsp la cual llamaremos frmProductos y escribimos la siguiente codificación: Luego creamos otro package que llamaremos Servlet, dentr...

Programación en c++: Arreglos - Buscar un elemento

1.- #include<iostream.h> #include<conio.h> #define MAX 100 void main() {int n, elem, i,a[MAX],band; clrscr(); cout<<"Limite:"; cin>>n; cout<<endl; for(i=0;i<n;i++) {cout<<"ELEMENTO ="; cin>>a[i]; } cout<<endl; cout<<"Ingrese elemento a buscar:"; cin>>elem; band=1; if(elem==a[i]) cout<<"Elemento encontrado"<<endl; if(band==0) cout<<"Elemento no encontrado"<<endl; getch(); }