// Listabasica 2012.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include #include #include using namespace std; //****************************************** typedef struct TArticulo { int Codigo; char *Nombre; int Disponible; float Precio; TArticulo *Siguiente; }x; typedef TArticulo * PtrTArticulo; //****************************************** void InicializarInventario(PtrTArticulo &Lista) { Lista = NULL; } void DestruirInventario(PtrTArticulo &Lista) { PtrTArticulo Aux; Aux = Lista; while (Aux!=NULL) { Lista = Lista->Siguiente; free(Aux); Aux = Lista; } } PtrTArticulo CrearArticulo(int NCodigo, int NDisponible, float NPrecio) { PtrTArticulo Pieza = new(TArticulo); Pieza->Codigo = NCodigo; Pieza->Disponible = NDisponible; Pieza->Precio=NPrecio; Pieza->Nombre="Nada"; Pieza->Siguiente=NULL; return Pieza; } void AgregarInicioInventario(PtrTArticulo &Lista, PtrTArticulo &Nuevo) { Nuevo->Siguiente=Lista; Lista = Nuevo; } void AgregarFinalInventario(PtrTArticulo &Lista, PtrTArticulo &Nuevo) { PtrTArticulo Aux; Aux = Lista; if (Aux != NULL) { while (Aux->Siguiente!=NULL) { Aux = Aux->Siguiente; } Aux->Siguiente = Nuevo; } else { Lista = Nuevo; } } void ListarInventario(PtrTArticulo &Lista) { int Contador = 1; PtrTArticulo Aux; Aux = Lista; while (Aux!=NULL) { printf(" %d ", Contador); printf("%d ", Aux->Codigo); printf(" %d ", Aux->Disponible); printf(" %f\n ", Aux->Precio); Aux = Aux->Siguiente; Contador ++; } } void GuardarInventario(PtrTArticulo Lista){ FILE *archivo; fopen_s(&archivo, "ARCHIVO.txt", "w+"); if (NULL==archivo){ printf("No se pudo abrir el archivo."); } else{ PtrTArticulo AUX=Lista; while(AUX != NULL){ fprintf_s(archivo,"%i\n", AUX->Codigo); fprintf_s(archivo,"%s\n", AUX->Nombre); fprintf_s(archivo,"%i\n", AUX->Disponible); fprintf_s(archivo,"%e\n", AUX->Precio); AUX=AUX->Siguiente; } } fclose(archivo); } void CargarInventario(PtrTArticulo &Lista){ int codigo; char nombre[20]; int disponible; float Precio; PtrTArticulo Nuevo; FILE *archivo; fopen_s(&archivo, "ARCHIVO.txt", "r+"); if (NULL==archivo){ printf("No se pudo abrir el archivo"); } else{ while(!feof(archivo)){ fscanf_s(archivo,"%i",&codigo); fscanf_s(archivo,"%s",nombre,20); fscanf_s(archivo,"%i",&disponible); fscanf_s(archivo,"%f",&Precio); Nuevo=new(TArticulo); Nuevo->Codigo = codigo; Nuevo->Disponible = disponible; Nuevo->Nombre = nombre; Nuevo->Precio = Precio; Nuevo->Siguiente = NULL; AgregarFinalInventario(Lista, Nuevo); } } fclose(archivo); } void main(int argc, char* argv[]) { //************************************************************************ PtrTArticulo Llantas; PtrTArticulo Abarrotes; PtrTArticulo Nuevo; PtrTArticulo Prueba; //************************************************************************ InicializarInventario(Abarrotes); for (int i = 100; i<200; i++) { Nuevo = CrearArticulo(i,i,i); AgregarInicioInventario(Abarrotes,Nuevo); } GuardarInventario(Abarrotes); ListarInventario(Abarrotes); system("pause"); DestruirInventario(Abarrotes); system("cls"); //*************************PRUEBA DE CARGAR******************************** InicializarInventario(Prueba); CargarInventario(Prueba); ListarInventario(Prueba); system("pause"); DestruirInventario(Prueba); //************************************************************************ InicializarInventario(Abarrotes); for (int i = 200; i<=300; i++) { Nuevo = CrearArticulo(i,i,i); AgregarFinalInventario(Abarrotes,Nuevo); } ListarInventario(Abarrotes); DestruirInventario(Abarrotes); //************************************************************************ InicializarInventario(Llantas); for (int i = 100; i<=200; i++) { Nuevo = CrearArticulo(i,i,i); AgregarInicioInventario(Llantas,Nuevo); } ListarInventario(Llantas); DestruirInventario(Llantas); //************************************************************************ InicializarInventario(Llantas); for (int i = 200; i<=300; i++) { Nuevo = CrearArticulo(i,i,i); AgregarFinalInventario(Llantas,Nuevo); } ListarInventario(Llantas); DestruirInventario(Llantas); }