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...

Lenguaje de Programacion en Java: Ecuación de primer grado

public class Main {     public static void main(String[] args) {         float x,a,e;                   Scanner teclado = new Scanner(System.in);         System.out.println("Coeficiente de X:");         x=teclado.nextInt();         System.out.println("Término independiente:");         a=teclado.nextInt();         if(a==0)           System.out.println("No es una ecuación de primer grado");           else         {              e=-a/x;              System.out.println("La raíz es=" +e);         }                                     } ...

Programación en Java: Suma de los cuadrados de los primeros números

public class Main {     public static void main(String[] args) {         int n,s;                  Scanner teclado = new Scanner(System.in);         System.out.println("Ingresar cantidad de elementos:");         n=teclado.nextInt();                      s=(n*(n+1)*(2*n+1))/6;                   System.out.println("Suma de los cuadrados de los primeros números=" +s);                   }    }