15/03/2008, 20:53
|
| | | Fecha de Ingreso: marzo-2008
Mensajes: 23
Antigüedad: 16 años, 8 meses Puntos: 0 | |
Re: hacer una boleta Cita: /*----------------------Fin de funcion principal---------------------------*/
/*-----------------------Funcion de agregacion-----------------------------*/
void agregar(void){
char b[21];
//for(i=0;i<1;i++,j++) { //ciclo para agregar datos y llevar registro de datos introducidos.
clrscr();
base=(DATOS *) malloc(sizeof(DATOS));
printf("Agrege un numero de empleado: ");
gets(b); //se captura numero de empleado como cadena de char.
base->nemp=atof(b); fflush(stdin); //luego se convierte la cadena capturada a un numero real o float.
printf("Agrege el nombre del empleado: ");
gets(base->nombre); fflush(stdin);
printf("Introduzca la edad: ");
scanf("%d",&base->edad); fflush(stdin);
printf("Introduzca el domicilio: ");
gets(base->domicilio);fflush(stdin);
if(one==NULL){
one=base;
base->next=NULL;
}
else
{
base->next=one;
one=base;
}
}
/*-------------------------------------------------------------------------*/
/*---------------------Funcion para mostrar registros---------------------*/
void mostrar(DATOS *ptr){
printf("\n # empleado: %.0f",ptr->nemp);
printf("\n Nombre: %s",ptr->nombre);
printf("\n Edad: %d",ptr->edad);
printf("\n Domicilio: %s\n\n",ptr->domicilio);
}
/*-------------------------------------------------------------------------*/
/*-------------------Funcion de ordenacion por numero----------------------*/
/*void pornumero(DATOS *ptr){
DATOS baux,*aux; // variables y punteros auxiliares tipo DATOS
for(J=0;J<=j;J++){ // ciclo para seleccion e intercambio de valores
ptr=one;
aux=ptr->next;
for(i=0;i<j-1;i++,){ //bucle para checar todos los registros
if((ptr->nemp)<(aux->nemp)){ // seleccion
baux=base[i];
base[i]=base[i+1];
base[i+1]=baux;
}
} }
} */
/*---------------------------------------------------------------------------*/
/*-------------------Funcion de ordenacion por nombre-----------------------*/
/*void pornombre(DATOS *ptr){
char *aux,*auxs,*cad1; //punteros auxiliares
int w,x,y,flag,flag2; //contadores,centinelas y banderas.
DATOS baux; //variable auxiliar de tipo DATOS.
ptr=base;
cad1=ptr->nombre;
for(J=0;J<j;J++,ptr++) {
cad1=ptr->nombre;
for(i=0;i<strlen(cad1);i++){
cad1=ptr->nombre;
if((cad1[i]<97)&&(cad1[i]>64)){ //conversion a minusculas
cad1[i]=cad1[i]+32;
} } }
ptr=base;
aux=ptr->nombre; //asignacion de un puntero a estructura en un apuntador char
for(w=0;w<j;w++){ //bucles para revisar todas las posibles combinaciones
ptr=base; //inicializa
aux=ptr->nombre;
for(x=0;x<j;x++,ptr++){ //ciclo para checar por cadena
aux=ptr->nombre;
auxs=(ptr+1)->nombre;
for(y=0,flag=0;flag==0;y++){ //ciclo para checar por caracter
if(aux[y]>auxs[y]&&x<j-1){ //si el primer caracter es diferente
baux=base[x];
base[x]=base[x+1];
base[x+1]=baux;
flag=1;
}
if(aux[y]==auxs[y]){
for(J=0,flag2=0;J<strlen(aux)||J<strlen(auxs)&&fla g2==0;J++){ //ciclo para checar por caracter si los primeros
if(aux[J]>auxs[J]&&x<j-1){ //caracteres son iguales
baux=base[x];
base[x]=base[x+1];
base[x+1]=baux;
flag2=1;
}
}
}
else{
flag=1;
}
}
}
}
} */
/*-------------------------------------------------------------------------*/
/*-----------------------Funcion de busqueda-------------------------------*/
int buscar(DATOS *ptr){
int busca, caux,r=5,z;
float m;
ptr=one;
char *cax,*cad1,*cad2;
DATOS buscanom;
do{
clrscr();
ptr=one;
z=-1;
printf("\n\n\t\t ELIJA LA FORMA DE BUSQUEDA...");
printf("\n\t\t A.- Por numero de empleado.");
printf("\n\t\t B.- Por nombre de empleado.");
printf("\n\t\t C.-(Volver al menu principal).");
printf("\n\n\t\t Cual es su opcion: ");
scanf("%c",&op); op=toupper(op);
switch(op){
case 'A': clrscr();
ptr=one; r=0;
printf("\n\n\t Buscar por numero de empleado.");
printf("\n\n\t\t Introdusca el numero del empleado a buscar: "); scanf("%i",&busca);
caux=ptr->nemp; fflush(stdin);
for(i=0;ptr!=NULL;i++){
// ciclo que busca en todos los registros de la base
caux=ptr->nemp;
if(caux==busca){ // seleccion si es identica
z=i;
printf("\n\nEl elemento actualmente se encuentra en la posicion [%i].\n\n",i+1); i=j;
mostrar(ptr); r=1; // r es bandera o centinela
printf("\n\n Buscar otro? (s/n):"); scanf("%c",&op);
if(op=='n'||op=='N') {op='C'; break;}
else{op='a';}
}
else{ r=0;} // bandera o centinela
ptr=ptr->next;
}
if(r==0){
printf("\n\n\n El elemento que busca no se encuentra actualmente en la lista...");
printf("\n\n Buscar otro? (s/n):"); scanf("%c",&op);
if(op=='n'||op=='N') {op='C'; break; }
else{op='a';}
}
break;
case 'B':
clrscr();
ptr=one; r=0; fflush(stdin);
printf("\n\n\t Buscar por nombre de empleado.");
printf("\n\n\t\t Introdusca el nombre del empleado a buscar: "); gets(buscanom.nombre);
cad2=buscanom.nombre;
cad1=ptr->nombre;
for(J=0;ptr!=NULL;J++) {
for(i=0;i<strlen(cad2);i++){
cad2=buscanom.nombre;
if((cad2[i]<97)&&(cad2[i]>64)){ // conversion a minusculas
cad2[i]=cad2[i]+32;
} }
for(i=0;i<strlen(cad1);i++){
cad1=ptr->nombre;
if((cad1[i]<97)&&(cad1[i]>64)){ //conversion a minusculas
cad1[i]=cad1[i]+32;
} }
ptr=ptr->next;
}
ptr=one;
for(i=0;ptr!=NULL;i++){ // for para seleccion de elementos iguales
cad2=buscanom.nombre;
cad1=ptr->nombre;
m=strcmp(cad1,cad2);
if(m==0){ z=i;
printf("\n\nEl elemento actualmente se encuentra en la posicion [%i].\n\n",i+1); i=j;
mostrar(ptr); r=1; i=j;
printf("\n\n Buscar otro? (s/n):"); scanf("%c",&op);
if(op=='n'||op=='N') {op='C'; break; }
else{op='a';}
}
else{ r=0;}
ptr=ptr->next;
}
if(r==0&&op){
printf("\n\n\n El elemento que busca no se encuentra actualmente en la lista...");
printf("\n Compruebe que: ");printf("\n *El nombre este correctamente escrito.");printf(" (No importan mayusculas o minusculas.)");
printf("\n *El nombre no contenga caracteres extra¤os.(ejemplo: %,&,$,?,etc..)");
printf("\n *El nombre este dado de alta.");
printf("\n\n Buscar otro? (s/n):"); scanf("%c",&op);
if(op=='n'||op=='N') {op='C'; break;}
else{op='a';}
}
break;
}
}while(op!='C');
return z;
}
/*-------------------------------------------------------------------------*/
/*-----------------------Funcion para eliminacion--------------------------*/
void eliminar(DATOS *ptr){
paux=one;
ptr=one;
for(i=0;i<z;i++){
paux=ptr;
ptr=ptr->next;
}
if(paux!=NULL)
{
if(paux==one)
one=paux->next;
else
paux->next=ptr->next;
}} |