lunes, 22 de octubre de 2012
algoritmos de busqueda ejemplos
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define n 100
struct alumno
{
char nomb[20], apell[20],carnet[15];
int adad;
float peso;
};
struct alumno stud[n];
int buscarnom(struct alumno stud[n],char abuscar[20],int inicio, int fin);
int buscarapell(struct alumno stud[n],char abuscar[20],int inicio, int fin);
int main()
{
struct alumno stud[n];
int x=0,op, j,r=0, i,ornom=0,orapell=0;
char carne[20];
//float ;
do{
system("cls");
printf("\n\t PROGRAMA DE BUSQUEDA DE DATOS \n");
printf("\n\t 1- A\244adir estudiantes");
printf("\n\t 2- Ordenar por Nombres ");
printf("\n\t 3- Ordenar por Apellido ");
printf("\n\t 4- Ordenar por Edad ");
printf("\n\t 5- Ordenar por Peso ");
printf("\n\t 6- Buscar por Nombre ");
printf("\n\t 7- Buscar por Apellido ");
printf("\n\t 8- Buscar por Carnet ");
printf("\n\t 9- Ver Datos ");
printf("\n\t 10- SALIR");
printf("\n\n\n Ingrese el numero de la opcion: ");
scanf("%d",&op);
system("cls");
switch(op){
case 1:{
printf("\t A\244adiendo Estudiantes\n ");
printf("\n\t Ingrese Nombre ");
scanf("%s",stud[r].nomb);
printf("\n\t Ingrese Apellido ");
scanf("%s",stud[r].apell);
printf("\n\t Ingrese Numero de Carnat ");
scanf("%s",stud[r].carnet);
printf("\n\t Ingrese Edad ");
scanf("%d",&stud[r].adad);
printf("\n\t Ingrese Peso ");
scanf("%f",&stud[r].peso);
r=r+1;
system("pause");
break;}
case 2:{
if(r==0){printf("PRIMERO DEBE INGRESAR DATOS\n\n");system("pause");break;}
struct alumno temp;
for (i=1; i<r; i++){
for (j=0 ; j<r - 1; j++)
if ((strcmp(stud[j].nomb,stud[j+1].nomb))>0){
temp = stud[j];
stud[j] = stud[j+1];
stud[j+1] = temp;}}
system("pause");
orapell=0;
ornom=1;
break;}
case 3:{
if(r==0){printf("PRIMERO DEBE INGRESAR DATOS\n\n");system("pause");break;}
struct alumno temp;
for (i=1; i<r; i++){
for (j=0 ; j<r - 1; j++)
if ((strcmp(stud[j].apell,stud[j+1].apell))>0){
temp = stud[j];
stud[j] = stud[j+1];
stud[j+1] = temp;}}
system("pause");
orapell=1;
ornom=0;
break;
}
case 4:{
if(r==0){printf("PRIMERO DEBE INGRESAR DATOS\n\n");system("pause");break;}
struct alumno temp;
for (i=1; i<r; i++){
for (j=0 ; j<r - 1; j++)
if (stud[j].adad>stud[j+1].adad){
temp = stud[j];
stud[j] = stud[j+1];
stud[j+1] = temp;}}
system("pause");
orapell=0;
ornom=0;
break;
}
case 5:{
if(r==0){printf("PRIMERO DEBE INGRESAR DATOS\n\n");system("pause");break;}
struct alumno temp;
for (i=1; i<r; i++){
for (j=0 ; j<r - 1; j++)
if (stud[j].peso>stud[j+1].peso){
temp = stud[j];
stud[j] = stud[j+1];
stud[j+1] = temp;}}
system("pause");
orapell=0;
ornom=0;
break;
}
case 6:{
if(r==0){printf("PRIMERO DEBE INGRESAR DATOS\n\n");system("pause");break;}
if(ornom==0){
struct alumno temp;
for (i=1; i<r; i++){
for (j=0 ; j<r - 1; j++)
if ((strcmp(stud[j].nomb,stud[j+1].nomb))>0){
temp = stud[j];
stud[j] = stud[j+1];
stud[j+1] = temp;}}
}
int pos;
char abuscar[20];
printf("Ingrese el Nombre a Buscar: ");scanf("%s",abuscar);
pos=buscarnom(stud,abuscar,0, r);
if(pos>=0)
{printf("\tEstudiante Encontrado\n\n");
printf("\nNOMBRE: %s",stud[pos].nomb);
printf("\nAPELLIDO: %s",stud[pos].apell);
printf("\nN# CARNET: %s",stud[pos].carnet);
printf("\nEDAD: %d",stud[pos].adad);
printf("\nPESO: %f\n",stud[pos].peso);
}
else
printf("\tEl nombre no coinside con los datos guardados\n\n");
system("pause");
break;
}
case 7:{
if(r==0){printf("PRIMERO DEBE INGRESAR DATOS\n\n");system("pause");break;}
if(orapell==0){
struct alumno temp;
for (i=1; i<r; i++){
for (j=0 ; j<r - 1; j++)
if ((strcmp(stud[j].apell,stud[j+1].apell))>0){
temp = stud[j];
stud[j] = stud[j+1];
stud[j+1] = temp;}}
}
int pos;
char abuscar[20];
printf("Ingrese el Apellido a Buscar: ");scanf("%s",abuscar);
pos=buscarapell(stud,abuscar,0, r);
if(pos>=0)
{printf("\tEstudiante Encontrado\n\n");
printf("\nNOMBRE: %s",stud[pos].nomb);
printf("\nAPELLIDO: %s",stud[pos].apell);
printf("\nN# CARNET: %s",stud[pos].carnet);
printf("\nEDAD: %d",stud[pos].adad);
printf("\nPESO: %f\n",stud[pos].peso);
}
else
printf("\tEl apellido no coinside con los datos guardados\n\n");
system("pause");
break;
}
case 8:{
if(r==0){printf("PRIMERO DEBE INGRESAR DATOS\n\n");system("pause");break;}
int orcarnt=0;
printf("Irgresa numero de carnet a buscar: ");scanf("%s",carne);
for(i=0;i<r;i++){
if(strcmp(stud[i].carnet,carne)==0)
{
orcarnt=1;
printf("\n\nNOMBRE: %s",stud[i].nomb);
printf("\nAPELLIDO: %s",stud[i].apell);
printf("\nN# CARNET: %s",stud[i].carnet);
printf("\nEDAD: %d",stud[i].adad);
printf("\nPESO: %f\n\n",stud[i].peso);
}
}
if(orcarnt==0){
printf("El numero de carnet no coinside con los datos guardados\n\n ");
}
system("pause");
break;
}
case 9:{
if(r==0){printf("PRIMERO DEBE INGRESAR DATOS\n\n");system("pause");break;}
for(j=0;j<r;j++){
printf("DATOS DE ESTUDIANTE N# %d\n",j+1);
printf("\nnonbre %s ",stud[j].nomb);
printf("\napellido %s ",stud[j].apell);
printf("\ncarnet %s ",stud[j].carnet);
printf("\nedad %d ",stud[j].adad);
printf("\npeso %f \n\n ",stud[j].peso);}
system("pause");
break;
}
case 10:{
x=1;
printf("\n\n SALIENDO .........................\n\n\n");
break;
}
}
}while(x==0);
}
int buscarnom(struct alumno stud[n],char abuscar[20],int inicio, int fin)
{
int izq,der, cen;
izq=0; der=fin-1;
while( izq <= der ){
cen=( izq + der )/2;
if( strcmp(stud[cen].nomb, abuscar)==0 )
return (cen);
if( strcmp(stud[cen].nomb, abuscar)<0 )
izq=cen+1;
else
der=cen-1;
}
return(-1);
}
int buscarapell(struct alumno stud[n],char abuscar[20],int inicio, int fin)
{
int izq,der, cen;
izq=0; der=fin-1;
while( izq <= der ){
cen=( izq + der )/2;
if( strcmp(stud[cen].apell, abuscar)==0 )
return (cen);
if( strcmp(stud[cen].apell, abuscar)<0 )
izq=cen+1;
else
der=cen-1;
}
return(-1);
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario