miren este es el codigo lo q no logro es q a la hora d imprimir los productos no salen todos nama sale el ultimo q ingrese segun yo es en ciclo for
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct nodo
{
char nome[30];
char empleado[30];
char empresa[30];
char prov[30];
char empprov[30];
char rfcpr[20];
char rfc[20];
char produ[30];
char dian[20];
int preci;
long int clave;
int prod;
long int debo;
int long inven;
struct nodo *siguiente;
};
typedef struct nodo NODO;
typedef NODO*NODOSIG;
void altemple(NODOSIG*,char[30],long int);
void mostrar_alta(NODOSIG*);
void empresa(NODOSIG*,char[30],int);
void mostrar_empresa(NODOSIG*);
void factura(NODOSIG*,char[30],char[20],char[20]);
void mostrar_factura(NODOSIG*);
void proveedor(NODOSIG*,char[30],char[30],char[20]);
void mostrar_provedor(NODOSIG*);
void producto(NODOSIG*,char[30],int,int,int);
void mostrar_producto(NODOSIG*,int);
void invetario(NODOSIG*);
void devol(NODOSIG*);
int main ()
{
char nom[30],nomemp[30],RFC[20],dia[20];
char nompr[30],emppr[30],RFCp[20],nomprd[30];
long int clav,clav2;
int op,arti,i,np,precio;
NODOSIG cola=NULL;
system("cls");
printf("\n\t introduzca el nombre de la empresa: ");
_flushall();
gets(nomemp);
printf("\n\t introduzca el rfc de la empresa: ");
_flushall();
gets(RFC);
printf("\n\t introduzca el dia: ");
_flushall();
gets(dia);
system("cls");
factura(&cola,nomemp,RFC,dia);
mostrar_factura(&cola);
getch ();
do
{
system("cls");
printf("\n\t eliga una opccion del menu");
printf("\n\t\t 1.-proveedor\n\t\t 2.-empleado\n\t\t 3.-inventario\n\t\t 4.-devoluciones");
printf("\n\t que opcion desea:");
scanf("%d",&op);
switch(op)
{
case 1:
system("cls");
_flushall();
printf("\n\t proveedor");
printf("\n\t nombre del proveedor: ");
_flushall();
gets(nompr);
printf("\n\t nombre de la empresa del proveedor: ");
_flushall();
gets(emppr);
printf("\n\t rfc de la empresa del proveedor: ");
_flushall();
gets(RFCp);
proveedor(&cola,nompr,emppr,RFCp);
mostrar_provedor(&cola);
printf("\n\t cuantos atriculos se van a registrar: ");
scanf("%d",&arti);
for(i=0;i<arti;i++)
{
system("cls");
printf("\n\t nombre del producto %d: ",i+1);
_flushall();
gets(nomprd);
printf("\n\t cantidad de producto %d: ",i+1);
scanf("%d",&np);
printf("\n\t precio del producto %d: ",i+1);
scanf("%d",&precio);
producto(&cola,nomprd,np,precio,arti);
}
mostrar_producto(&cola,arti);
getch();
break;
case 2:
system("cls");
printf("\n introduzca su nombre: ");
_flushall();
gets(nom);
printf("\n introduzca una clave: ");
scanf("\n%ld",&clav);
altemple(&cola, nom , clav);
mostrar_alta(&cola);
getch ();
break;
case 3:
printf("\n\t para acceder al inventario necesita estar dado de alta");
printf("\n\t introduzca su clave: ");
scanf("%ld",clav2);
if (clav == clav2)
{
mostrar_producto(&cola,arti);
getch ();
}
else
{
printf("\n\t clave incorrecta presione cualquier tecla para volver al menu de inicio");
getch ();
}
break;
}
}while (op != 4);
getch ();
return 0;
}
void altemple(NODOSIG*cola,char nom[30], long int clav)
{
NODOSIG nuevo,actual,previo;
actual=*cola;
nuevo = new(nodo);
if (nuevo != NULL)
{
strcpy(nuevo->nome,nom);
nuevo->clave = clav;
nuevo->siguiente = NULL;
nuevo -> siguiente = *cola;
*cola = nuevo;
}
}
void producto(NODOSIG*cola,char nomprd[30],int np,int precio,int arti)
{
NODOSIG nuevo,actual,previo;
actual=*cola;
nuevo = new(nodo);
if (nuevo != NULL)
{
strcpy(nuevo->produ,nomprd);
nuevo->prod = np;
nuevo->preci = precio;
nuevo->siguiente = NULL;
nuevo -> siguiente = *cola;
*cola = nuevo;
}
}
void proveedor(NODOSIG*cola,char nompr[50],char emppr[50],char RFCp[50])
{
NODOSIG nuevo,actual,previo;
actual=*cola;
nuevo = new(nodo);
if (nuevo != NULL)
{
strcpy(nuevo->prov,nompr);
strcpy(nuevo->empprov,emppr);
strcpy(nuevo->rfcpr,RFCp);
nuevo->siguiente = NULL;
nuevo -> siguiente = *cola;
*cola = nuevo;
}
}
void factura(NODOSIG*cola,char nomemp[30],char RFC[30],char dia[20])
{
NODOSIG nuevo,actual,previo;
actual=*cola;
nuevo = new(nodo);
if (nuevo != NULL)
{
strcpy(nuevo->empresa,nomemp);
strcpy(nuevo->dian,dia);
strcpy(nuevo->rfc,RFC);
nuevo->siguiente = NULL;
nuevo -> siguiente = *cola;
*cola = nuevo;
}
}
void mostrar_alta(NODOSIG* cola)
{
NODOSIG actual=*cola;
printf("\n-nombre: %s\n clave: %ld",actual->nome,actual->clave);
}
void mostrar_provedor(NODOSIG* cola)
{
NODOSIG actual=*cola;
printf("\n\tnombre del proveedor: %s",actual->prov);
printf("\n\t empresa del proveedor: %s",actual->empprov);
printf("\n\t RFC del proveedor: %s",actual->rfcpr);
}
void mostrar_producto(NODOSIG* cola,int arti)
{
int i;
for(i=0;i<arti;i++)
{
NODOSIG actual=*cola;
printf("\n\t nombre del producto: %s\n\t cantidad del producto: %d\n\t precio del producto: %d",
actual->produ,actual->prod,actual->preci);
}
}
void mostrar_factura(NODOSIG* cola)
{
NODOSIG actual=*cola;
printf("\n\t dia: %s",actual->dian);
printf("\n\t nombre de la empresa: %s",actual->empresa);
printf("\n\t RFC: %s",actual->rfc);
}