 
			
				15/03/2008, 20:53
			
			
			     |  
        |     |    |    Fecha de Ingreso: marzo-2008  
						Mensajes: 23
					  Antigüedad: 17 años, 7 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; 
}}                |