las funciones que estan fallando son: localiza imprime y suprime.
el codigo que tengo es el siguiente:
Código:
/*Listas sin encabezado doblemente Ligada(No circular)*/
/*inventario*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef int tipo_elem;
struct tela{
char nombre[30];
int disponible;
}a[30];
/*struct tipo{
char tela;
int cantidad,;
int ult;
};*/
//struct bodega{
// struct tipo descripcion;
// };
struct nodo{
tipo_elem elem;
nodo * sig;
};
typedef nodo* posicion;
typedef int logico;
/*FUNCIONES DE LAS OPERACIONES CON LISTAS*/
posicion E;
void inicializa(nodo **inventario)
{
*inventario=NULL;
}
void suprimir(posicion p,posicion *inventario)
{
posicion aux,aux2;
if(p==*inventario){
aux=(*inventario)->sig;
free(*inventario);
*inventario=aux;
}
else{
aux=*inventario;
while(aux->sig!=NULL && aux->sig!=p)
aux=aux->sig;
if(aux->sig==p)
{
aux2=p->sig;
free(p);
aux->sig=aux2;
}
else
printf("No se encontro");
}
}
logico vacia(posicion inventario)
{
if(inventario==NULL)
return 1;
else
return 0;
}
posicion localiza(tipo_elem x, posicion inventario)
{
if(vacia(inventario))
{
return 0;
}
else{
while (inventario!=NULL && inventario->elem!=x)
inventario=inventario->sig;
if (inventario==NULL)
return NULL;
else
return inventario;
}
}
tipo_elem recupera(posicion p)
{
if (p!=NULL)
return (p->elem);
else
return -1; /*valor invalido*/
}
/*FUNCION IMPRIME*/
int imprimir(posicion inventario)
{
if(vacia(inventario))
printf("Lista Vacia");
else{
while (inventario!=NULL)
{
printf("%d",inventario->elem);
inventario=inventario->sig;
}
}
}
/*FUNCION ANULA*/
void anula(posicion *inventario)
{
posicion aux;
while (*inventario!=NULL)
{
aux=(*inventario)->sig;
free(*inventario);
*inventario=aux;
}
}
void inserta(tipo_elem x, posicion p,posicion *inventario)
{
int i,opcion;
int cont=0,num;
char t;
do{
printf("\n 1)licra\n 2)popelina\n 3)algodon\n 4)lino\n 5)tergal\n \t");
scanf("%d",&opcion);
printf("Nombre de la tela\n");
scanf("%s",a[cont].nombre);
printf("\n<----DAME LOS ROLLOS A INCERTAR---->\n");
scanf("%d",&num);
posicion aux;
aux=(nodo *) malloc(1*sizeof(nodo));
aux->elem=x;
if(p==NULL){
aux->sig=*inventario;
*inventario=aux;
}
else{
aux->sig=p->sig;
p->sig=aux;
}
/*printf("\n<---Se inserto un elemento en la lista ---->\n");*/
printf("%s\n",a[cont].nombre);
printf("rollos: %d\n ",num);
}while(opcion!=5);
printf("fin de la captura\n\n");
getch();
}
void fallasdetela()
{
int op,tel,mul,falla;
float m,nop,tel1,mul1,falla1;
printf("dame la cantdad de rollos");
scanf("%d",&op);
if(op%5==0)
{
tel=op/5;
mul=2*tel;
falla=mul-tel;
printf("%d",falla);
}
else
{
printf("dame los rollos q sobran");
scanf("%d",&m);
nop=op-m;
tel1=nop/5;
mul1=2*tel1;
falla1=mul1-tel1;
printf("%f",falla1);
}
}
void telagastada()
{
int talla,opcion,num,s,r,t,p;
float a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;
inicializa (&E);
printf("\ntipo de ropa\n");
printf("\n1)CH\n 2)M\n 3)G\t\t");
scanf("%d",&talla);
if(talla==1)
{
printf("\n1)blusa\n 2)vestido\n 3)pantalon\n 4)short\n 5)maya \n6)fin\t\t");
scanf("%d",&opcion);
switch(opcion!=6)
{
case 1: printf("cuantas piezas hicistes blusa: ");
scanf("%d",&s);
printf("cuantos rollos: ");
scanf("%d",&p);
j=.45*s;
l=100*p;
a=l-j;
printf("%f",a);
break;
case 2: printf("cuantas piezas hicistes vestido:");
scanf("%d",&r);
printf("cuantos rollos");
scanf("%d",&p);
g=.45*r;
l=100*p;
i=l-g;
printf("%f",i);
break;
case 3: printf("cuantas piezas hicistes pantalon:");
scanf("%d",&num);
printf("cuantos rollos");
scanf("%d",&p);
a=1.15*num;
l=100*p;
c=l-a;
printf("%f",c);
break;
case 4: printf("cuantas piezas hicistes short:");
scanf("%d",&n);
printf("cuantos rollos");
scanf("%d",&p);
d=.45*n;
l=100*p;
f=l-d;
printf("%f",f);
break;
case 5: printf("cuantas piezas hicistes maya:");
scanf("%d",&t);
printf("cuantos rollos");
scanf("%d",&p);
k=.15*t;
l=100*p;
o=l-k;
printf("%f",o);
break;
case 6: printf("FIN DE LA CAPTURA\n");
break;
/* default:
printf("opcion invalida!!!!!\n");
opcion=0;*/
break;
}
}
if(talla==2)
{
printf("\n1)blusa\n 2)vestido\n 3)pantalon\n 4)short\n 5)maya\n 6)fin\t\t");
scanf("%d",&opcion);
switch(opcion!=6)
{
case 1: printf("cuantas piezas hicistes blusa:");
scanf("%d",&s);
printf("cuantos rollos");
scanf("%d",&p);
j=1*s;
b=100*p;
l=b-j;
printf("%f",l);
break;
case 2: printf("cuantas piezas hicistes vestido:");
scanf("%d",&r);
printf("cuantos rollos");
scanf("%d",&p);
g=1*r;
b=100*p;
i=b-g;
printf("%f",i);
break;
case 3: printf("cuantas piezas hicistes pantalon:");
scanf("%d",&num);
printf("cuantos rollos");
scanf("%d",&p);
a=1.30*num;
b=100*p;
c=b-a;
printf("%f",c);
break;
case 4: printf("cuantas piezas hicistes short:");
scanf("%d",&n);
printf("cuantos rollos");
scanf("%d",&p);
d=1*n;
b=100*p;
f=b-d;
printf("%f",f);
break;
case 5: printf("cuantas piezas hicistes maya:");
scanf("%d",&t);
printf("cuantos rollos");
scanf("%d",&p);
l=.30*n;
b=100*p;
o=b-l;
printf("%f",o);
break;
case 6: printf("FIN DE LA CAPTURA\n");
break;
/* default:
printf("opcion invalida!!!!!\n");
opcion=0;
break;*/
}
}
else {
printf("\n1)blusa\n 2)vestido\n 3)pantalon\n 4)short\n 5)maya\n 6)fin\t\t");
scanf("%d",&opcion);
switch(opcion)
{
case 1: printf("cuantas piezas hicistes blusa:");
scanf("%d",&s);
printf("cuantos rollos");
scanf("%d",&p);
j=1.20*s;
b=100*p;
l=b-j;
printf("%f",l);
break;
case 2: printf("cuantas piezas hicistes vestido:");
scanf("%d",&r);
printf("cuantos rollos");
scanf("%d",&p);
g=1.20*r;
b=100*p;
i=b-g;
printf("%f",i);
break;
case 3: printf("cuantas piezas hicistes pantalon:");
scanf("%d",&num);
printf("cuantos rollos");
scanf("%d",&p);
a=1.50*num;
b=100*p;
c=b-a;
printf("%f",c);
break;
case 4: printf("cuantas piezas hicistes short: ");
scanf("%d",&r);
printf("cuantos rollos");
scanf("%d",&p);
g=1.20*r;
b=100*p;
i=b-g;
printf("%f",i);
break;
case 5: printf("cuantas piezas hicistes maya:");
scanf("%d",&r);
printf("cuantos rollos");
scanf("%d",&p);
g=1.20*r;
b=100*p;
i=b-g;
printf("%f",i);
break;
case 6: printf("FIN DE LA CAPTURA\n");
break;
/* default:
printf("opcion invalida!!!!!\n");
opcion=0;
break;*/
}
}
}
void acomoda()
{ int op,opc;
float tel,mul,falla,m;
printf("dame telas q hay");
printf("\n1)licra\n 2)popelina\n 3)algodon\n 4)lino\n 5)tergal\n 6)fin\t\t");
scanf("%d",&opc);
switch(opc!=6)
{
case 1: telagastada();
break;
case 2: telagastada();
break;
case 3: telagastada();
break;
case 4: telagastada();
break;
case 5: telagastada();
break;
case 6: printf("FIN DE LA CAPTURA\n");
break;
/* default:
printf("opcion invalida!!!!!\n");
opc=0;
break;*/
}
}
/*void capturar()
{
int i,x,opcion;
int cont=0,num;
char t;
do{
printf("\n 1)licra\n 2)popelina\n 3)algodon\n 4)lino\n 5)tergal\n \t");
scanf("%d",&opcion);
printf("Nombre de la tela\n");
scanf("%s",a[cont].nombre);
printf("\n<----DAME LOS ROLLOS A INCERTAR---->\n");
scanf("%s",&num);
inserta(x,NULL,&E);
printf("\n<---Se inserto un elemento en la lista ---->\n");
printf("%s\n",a[cont].nombre);
printf("fin de la captura\n\n");
}while(opcion!=5);
getch();
}*/
int main (){
system("cls");
int x,opcion;
posicion pun;
int n, i,opc;
inicializa (&E);
int a[30];
do{
printf ("...........Menu............\n");
printf ("1-incerta\n");
/*printf ("2-capturar\n");*/
printf ("3-localiza.....\n");
printf ("4-imprime....\n");
printf ("5---->acomoda\n");
printf ("6-Suprime.....\n");
printf ("7-anula.......\n");
printf ("8-vasia.......\n");
printf ("9-Salir.......\n");
printf ("Elige una opcion:....\n");
scanf ("%d", &opc);
switch(opc){
case 1:
/*printf ("\nDame numero a insertar.....\n");
scanf("%d",& x);*/
inserta(x,NULL,&E);
break;
/*case 2:
capturar();
getch();
break;*/
case 3:
printf ("\nDame numero a localizar.....\n");
scanf ("%d",& x);
pun=localiza(x,E);
if(pun==NULL)
printf("Numero no encontrado\n");
else
printf("%p\n",pun);
getch();
break;
case 4:
printf("\n<-La lista es:\n");
imprimir(E);
getch();
break;
case 5:
acomoda();
getch();
break;
case 6:
printf("\n dame el nombre de la tela:\t");
scanf("%d",&opcion);
printf ("\nDame numero a suprimir.....\n");
scanf ("%d",& x);
suprimir(localiza(x,E),&E);
printf("numero suprimido");
break;
case 7:
anula(&E);
printf("Lista Anulada");
getch();
break;
case 8:
if(vacia(E))
printf("SI");
else
printf("NO");
getch();
break;
case 9:
printf("fin");
break;
default:
printf("Opcion No Valida");
}
} while(opc!=9);
return 0;
}
espero puedan ayudarme por que no encuentro el error en el codigo y gracias de antemano