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

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);         }                                     } ...

Programacion: Arbol binario - Programacion en c++

1.- Hacer un programa que permita buscar un elemento, el elemento mayor, el elemento menor y el menor de los mayores de un árbol binario. #include <iostream.h> #include <conio.h> struct nodo     {      int valor;      struct nodo* izq;      struct nodo* der;     }; typedef struct nodo *ABB; void inserta(ABB& ,int); void preorden(ABB); void postorden(ABB); void enorden(ABB); void verarbol(ABB,int); int buscar(ABB,int); int buscarmayor(ABB); int buscarmenor(ABB); void podar(ABB&,int); void main() { ABB arbol=NULL; ABB subarbol=NULL; int n,x,opc,a;   do     {      cout<<"menu principal"<<endl;      cout<<"1.ingresar elementos"<<endl;      cout<<"2.pre orden"<<endl;      cout<<"3.mostrar hojas"<...

Programacion: Arreglos con estructuras - ordenamientos

1.- Se pide realizar un ordenamiento de artículos, para ello se debe ingresar n artículos y ordenarlos por su monto de inversión. struct articulo {char codigo[10];  char producto[20];  float preciocompra;  float monto;  int cantidad;  }  #include<iostream.h> #include<string.h> #include<conio.h> #define MAX 50 struct articulo {char codigo[10];  char producto[20];  float preciocompra;  float monto;  int cantidad;  };  void leer(int, struct articulo[]);  void montodeinversion(int, struct articulo[]);  void ordenmonto(int, struct articulo[]);  void listado(int, struct articulo[]);  void main()  {int n;   struct articulo Art[MAX];   cout<<"Cantidad de articulos que desea poner:";   cin>>n;   leer(n,Art);   montodeinversion(n,Art);   ordenmonto(n,Art);   cout<<"productos ordenados por su cantidad de mont...