Ir al contenido principal

Programacion: Arreglos con estructuras - busqueda y ordenamiento por fecha de nacimiento


1.- Realizar un programa que permita ordenar por fecha de nacimiento, y buscar la fecha de nacimiento si está se encuentra.

#include<iostream.h>
#include<conio.h>
#include<string.h>
#define MAX 100
struct fecha
{ char dia[3];
  char mes[3];
  char anho[5];
};
struct personal
{ char codigo[9];
  char nombre[MAX];
  char apellidos[MAX];
  struct fecha fecnac;
};
void leepersonal(int, struct personal[]);
void listado(int, struct personal[]);
void ordenaxfecha(int n,struct personal[]);
int busqueda (int, struct personal[], struct fecha);

void main()
{int n,pos;
struct fecha f;
 struct personal per[MAX];
 cout<<"Limite:"; cin>>n;
 leepersonal(n,per);
 ordenaxfecha(n,per);
 listado(n,per);
 cout<<"que fecha de nacimiento desea buscar?:"<<endl;
 cout<<"DIA:"; cin>>f.dia;
 cout<<"MES:"; cin>>f.mes;
 cout<<"ANHO:"; cin>>f.anho;
 pos=busqueda(n,per,f);
 if(pos==-1)
 cout<<"Elemento no se encuentra"<<endl;
 else
 cout<<"Elemento encontrado en la posicion"<<pos;
 getch();
}

void leepersonal(int n, struct personal x[])
{int i;
 for(i=0;i<n;i++)
 {cout<<"Codigo:"; cin>>x[i].codigo;
  cout<<"Nombre:"; cin>>x[i].nombre;
  cout<<"Apellidos:"; cin>>x[i].apellidos;
  cout<<"Dia:"; cin>>x[i].fecnac.dia;
  cout<<"Mes:"; cin>>x[i].fecnac.mes;
  cout<<"Anho:"; cin>>x[i].fecnac.anho;
  cout<<endl;
 }
}
void listado(int n, struct personal x[])
{cout<<endl<<"LISTADO DE EMPLEADOS"<<endl;
for(int i=0;i<n;i++)
{cout<<x[i].codigo<<"\t" <<x[i].nombre<<"\t" <<x[i].apellidos<<"\t" <<x[i].fecnac.dia<<"\t"<<x[i].fecnac.mes<<"\t"<<x[i].fecnac.anho<<endl;
cout<<endl;
}
}
void ordenaxfecha(int n,struct personal x[])
{ struct personal temp;
  char f1[9],f2[9];
  for(int i=1;i<n;i++)
    for(int j=n-1;j>=i;j--)
     {strcpy(f1,"");strcpy(f2,"");
      strcat(f1,x[j-1].fecnac.anho);
      strcat(f1,x[j-1].fecnac.mes);
      strcat(f1,x[j-1].fecnac.dia);
      strcat(f2,x[j].fecnac.anho);
      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;
 }}
}

int busqueda(int n,struct personal x[], struct fecha f)
{
char f1[9],f2[9];
  int mitad, izq=0, der=n-1;
  while(izq<=der)
  { mitad=(izq+der)/2 ;
    strcpy(f1,"");strcpy(f2,"");
    strcat(f1,f.anho);
    strcat(f1,f.mes);
    strcat(f1,f.dia);
    strcat(f2,x[mitad].fecnac.anho);
    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);                   }    }