Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* File: main.c
- * Author: Iván G. Arjona*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAXCH 128
- #define MAXAR 999
- #define MAXMA 200
- #define N 10
- typedef struct
- {
- int CM;
- char Desc[MAXCH];
- } Marca;
- typedef struct
- {
- int CodArt;
- char Rubro;
- char Desc[MAXCH];
- int CM;
- int CantEx;
- int PunRep;
- float PrecioLista;
- } Articulo;
- //Funcion validar codigo de marcas
- int ValCodMar (Marca [MAXAR],int , int );
- //Funcion validar descripcion
- int ValDes (Marca [],int ,char []);
- //Funcion control de errores
- void ControlError(int );
- void CargaMarca (Marca [MAXAR],int *,int CM,char []);
- int main(int argc, char** argv) {
- //variables
- int op,dim=-1,rep;
- //Arreglo con las marcas y puntero del arreglo marcas
- Marca ArMarcas[MAXMA];
- Articulo ArArticulos[1];
- //BORRAR
- //ArMarcas[0].CM=3;
- //ArMarcas[1].CM=4;
- //HASTA AQUI
- do
- {
- //menu de opciones
- printf("\nIngrese opcion\n");
- printf("[1] Agregar información\n");
- printf("[2] Otorgar turnos\n");
- printf("[3] Realizar venta\n");
- printf("[4] Reponer mercadería\n");
- printf("[5] Informe de ventas\n");
- printf("[6] Informe de turnos\n");
- printf("[0] Salir\n");
- scanf("%d", &op);
- switch(op)
- {
- case 1:
- {
- //Variables "op" para opcion, "rep" para repetir menu.
- int op, repe=1;
- do
- {
- printf("\nIngrese opcion\n");
- printf("[1] Agregar artículos\n");
- printf("[2] Agregar marcas\n");
- printf("[0] Volver al menú anterior\n");
- scanf("%d", &op);
- switch(op)
- {
- case 2:
- {
- //Agregar marcas.
- printf("\n");
- //Auxiliar de estructura Marca donde se guarda datos del usuario a validar y luego cargar.
- Marca MarcaAux;
- //Pide al usuario Codigo de marca y descripcion y lo guarda en MarcaAux de tipo Marca.
- printf("Introduzca Codigo de marca: ");
- scanf("%d", &MarcaAux.CM);
- getchar();
- printf("Introduzca descripcion: ");
- gets(MarcaAux.Desc);
- printf("\n");
- //Valida: codigo de marca con funcion, y descripcion no vacia.
- if((((ValCodMar(ArMarcas,dim,MarcaAux.CM))==0)) && (strlen(MarcaAux.Desc)>0))
- {
- //Codigo de marca y descripcion VALIDOS.
- //Agregarlos al arreglo
- CargaMarca(ArMarcas,&dim,MarcaAux.CM,MarcaAux.Desc);
- printf("El codigo es %d", ArMarcas[dim].CM);
- printf("\nValido");
- }
- else if(strlen(MarcaAux.Desc)>0)
- {
- //Descripcion no vacia, Codigo de marca existente.
- ControlError(ValCodMar(ArMarcas,dim,MarcaAux.CM));
- }
- else
- {
- //Descripcion vacia y codigo de marca existente.
- ControlError((ValCodMar(ArMarcas,dim,MarcaAux.CM))+2);
- }
- repe=1;
- break;
- }
- case 1:
- {
- //Funcion de agregar articulos
- printf("entraste a 1\n");
- //Auxiliar de Articulos donde guarda datos ingresados por usuario
- Articulo ArticuloAux;
- //Pide al usuario el ingreso de datos del articulo
- printf("Introduzca rubro: ");
- scanf("%c", ArticuloAux.Rubro);
- //comprueba rubro
- if(ArticuloAux.Rubro=='P' || ArticuloAux.Rubro=='S')
- {
- if(ArticuloAux.Rubro=='P')
- {
- //Pedir ingreso de codigo marca, cantidad y punto de repo
- }
- //pedir ingreso de descripcion y precio de lista
- }
- else
- {
- //El usuario no ingreso P o S para el rubro
- }
- repe=1;
- break;
- }
- case 0:
- {
- //vuelve al menu anterior
- repe=0;
- break;
- }
- }
- }
- while(repe==1);
- rep=1;
- break;
- case 0:
- {
- rep=0;
- break;
- }
- }
- }
- }
- while(rep==1);
- return (EXIT_SUCCESS);
- }
- //Funcion validar codigo de marcas.
- int ValCodMar (Marca Arreglo[MAXAR],int Dimension,int CodMar)
- {
- //TERMINADO
- /*Descripcion: Toma un puntero a un array de regsistro tipo Marca,un entero tipo puntero de dimension, y un entero que es el codigo marca del usuario
- * * Devuelve en la funcion un numero entero:
- * * Para 0: Codigo mayor a 0 e inexistente en el array
- * * Para 5: Codigo menor o igual a 0
- * * Para 4: Codigo Existente
- * */
- //Declaracion de varables locales
- int error,i,b=0;
- if(CodMar>0)
- {
- for(i=0;i<=Dimension;i++)
- {
- //Si el codigo marcas (cm) existe en el arreglo al que apunta entonces error=4
- if(CodMar==(Arreglo[i].CM) && b==0)
- {
- error=4;
- b=1;
- }
- };
- }
- else
- error=5;
- return error;
- //TERMINADO
- }
- //Funcion cargar Marcas
- void CargaMarca (Marca ArrMarca[MAXCH],int *DimArr,int CM,char Des[MAXCH])
- {
- *DimArr=*DimArr+1;
- ArrMarca[*DimArr].CM=CM;
- // ArrMarca[*DimArr].Desc=Des[MAXCH];
- }
- //Funcion de control de errores.
- void ControlError(int error)
- {
- //TERMINADO
- int b[10], i=0;
- //Guardo el resto de la division de error/2 en el array b para convertirlo en binario
- while(error>1)
- {
- b[i]=(error%2);
- i++;
- error=(error/2);
- }
- b[i]=1;
- //Me muevo a través del array de atras hacia adelante
- //NO TERMINADO
- while(i>(-1))
- {
- //printf("%d", b[i]);
- if(b[i]==1)
- {
- switch(i)
- {
- case 0:
- {
- printf("Error 0 (1)\n");
- break;
- }
- case 1:
- {
- printf("Error 1 (2): Descripcion vacia\n");
- break;
- }
- case 2:
- {
- printf("Error 2 (4): El codigo de marca existente\n");
- break;
- }
- case 3:
- {
- printf("Error 3 (8)\n");
- break;
- }
- case 4:
- {
- printf("Error 4 (16)\n");
- break;
- }
- case 5:
- {
- printf("Error 5 (32)\n");
- break;
- }
- case 6:
- {
- printf("Error 6 (64)\n");
- break;
- }
- case 7:
- {
- printf("Error 7 (128)\n");
- break;
- }
- case 8:
- {
- printf("Error 8 (256)\n");
- break;
- }
- default:
- {
- }
- }
- }
- i--;
- }
- //TERMINADO
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement