Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.70 KB | None | 0 0
  1. /* File:   main.c
  2.  * Author: Iván G. Arjona*/
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #define MAXCH 128
  8. #define MAXAR 999
  9. #define MAXMA 200
  10. #define N 10
  11.  
  12. typedef struct
  13. {
  14.     int CM;
  15.     char Desc[MAXCH];
  16.    
  17. } Marca;
  18.  
  19. typedef struct
  20. {
  21.     int CodArt;
  22.     char Rubro;
  23.     char Desc[MAXCH];
  24.     int CM;
  25.     int CantEx;
  26.     int PunRep;
  27.     float PrecioLista;
  28.    
  29. } Articulo;
  30.  
  31. //Funcion validar codigo de marcas
  32. int ValCodMar (Marca [MAXAR],int , int );
  33. //Funcion validar descripcion
  34. int ValDes (Marca [],int ,char []);
  35. //Funcion control de errores
  36. void ControlError(int );
  37. void CargaMarca (Marca [MAXAR],int *,int CM,char []);
  38.  
  39.  
  40. int main(int argc, char** argv) {
  41.    
  42.     //variables
  43.     int op,dim=-1,rep;
  44.     //Arreglo con las marcas y puntero del arreglo marcas
  45.     Marca ArMarcas[MAXMA];
  46.     Articulo ArArticulos[1];
  47.     //BORRAR
  48.     //ArMarcas[0].CM=3;
  49.     //ArMarcas[1].CM=4;
  50.     //HASTA AQUI
  51.     do
  52.     {
  53.         //menu de opciones
  54.         printf("\nIngrese opcion\n");
  55.         printf("[1] Agregar información\n");
  56.         printf("[2] Otorgar turnos\n");
  57.         printf("[3] Realizar venta\n");
  58.         printf("[4] Reponer mercadería\n");
  59.         printf("[5] Informe de ventas\n");
  60.         printf("[6] Informe de turnos\n");
  61.         printf("[0] Salir\n");
  62.         scanf("%d", &op);
  63.        
  64.         switch(op)
  65.         {
  66.             case 1:
  67.             {
  68.                 //Variables "op" para opcion, "rep" para repetir menu.
  69.                 int op, repe=1;
  70.                 do
  71.                 {
  72.                     printf("\nIngrese opcion\n");
  73.                     printf("[1] Agregar artículos\n");
  74.                     printf("[2] Agregar marcas\n");
  75.                     printf("[0] Volver al menú anterior\n");
  76.                     scanf("%d", &op);
  77.                    
  78.                     switch(op)
  79.                     {
  80.                         case 2:
  81.                         {
  82.                             //Agregar marcas.
  83.                             printf("\n");                            
  84.                             //Auxiliar de estructura Marca donde se guarda datos del usuario a validar y luego cargar.
  85.                             Marca MarcaAux;
  86.                             //Pide al usuario Codigo de marca y descripcion y lo guarda en MarcaAux de tipo Marca.
  87.                             printf("Introduzca Codigo de marca: ");
  88.                             scanf("%d", &MarcaAux.CM);
  89.                             getchar();
  90.                             printf("Introduzca descripcion: ");
  91.                             gets(MarcaAux.Desc);
  92.                             printf("\n");
  93.                            
  94.                             //Valida: codigo de marca con funcion, y descripcion no vacia.
  95.                             if((((ValCodMar(ArMarcas,dim,MarcaAux.CM))==0)) && (strlen(MarcaAux.Desc)>0))
  96.                             {
  97.                                 //Codigo de marca y descripcion VALIDOS.
  98.                                 //Agregarlos al arreglo
  99.                                 CargaMarca(ArMarcas,&dim,MarcaAux.CM,MarcaAux.Desc);
  100.                                 printf("El codigo es %d", ArMarcas[dim].CM);
  101.                                 printf("\nValido");
  102.                             }
  103.                             else if(strlen(MarcaAux.Desc)>0)
  104.                             {
  105.                                 //Descripcion no vacia, Codigo de marca existente.
  106.                                 ControlError(ValCodMar(ArMarcas,dim,MarcaAux.CM));
  107.                             }
  108.                             else
  109.                             {
  110.                                 //Descripcion vacia y codigo de marca existente.
  111.                                 ControlError((ValCodMar(ArMarcas,dim,MarcaAux.CM))+2);
  112.                             }
  113.                             repe=1;
  114.                             break;
  115.                         }
  116.                        
  117.                         case 1:
  118.                         {
  119.                             //Funcion de agregar articulos
  120.                             printf("entraste a 1\n");
  121.                             //Auxiliar de Articulos donde guarda datos ingresados por usuario
  122.                             Articulo ArticuloAux;
  123.                             //Pide al usuario el ingreso de datos del articulo
  124.                             printf("Introduzca rubro: ");
  125.                             scanf("%c", ArticuloAux.Rubro);
  126.                             //comprueba rubro
  127.                             if(ArticuloAux.Rubro=='P' || ArticuloAux.Rubro=='S')
  128.                             {
  129.                                 if(ArticuloAux.Rubro=='P')
  130.                                 {
  131.                                     //Pedir ingreso de codigo marca, cantidad y punto de repo
  132.                                 }
  133.                                 //pedir ingreso de descripcion y precio de lista
  134.                             }
  135.                             else
  136.                             {
  137.                                 //El usuario no ingreso P o S para el rubro
  138.                             }
  139.                             repe=1;
  140.                             break;
  141.                         }
  142.                        
  143.                         case 0:
  144.                         {
  145.                             //vuelve al menu anterior
  146.                             repe=0;
  147.                             break;
  148.                         }
  149.                        
  150.                     }
  151.                 }
  152.                 while(repe==1);
  153.                 rep=1;
  154.                 break;
  155.                
  156.                 case 0:
  157.                 {
  158.                     rep=0;
  159.                     break;
  160.                 }
  161.             }
  162.         }
  163.     }
  164.     while(rep==1);
  165.     return (EXIT_SUCCESS);
  166. }
  167.  
  168. //Funcion validar codigo de marcas.
  169. int ValCodMar (Marca Arreglo[MAXAR],int Dimension,int CodMar)
  170. {
  171.     //TERMINADO
  172.     /*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
  173.      *      * Devuelve en la funcion un numero entero:
  174.      *      * Para 0: Codigo mayor a 0 e inexistente en el array
  175.      *      * Para 5: Codigo menor o igual a 0
  176.      *      * Para 4: Codigo Existente
  177.      *      */
  178.     //Declaracion de varables locales
  179.     int error,i,b=0;
  180.     if(CodMar>0)
  181.     {
  182.         for(i=0;i<=Dimension;i++)
  183.         {
  184.             //Si el codigo marcas (cm) existe en el arreglo al que apunta entonces error=4
  185.             if(CodMar==(Arreglo[i].CM) && b==0)
  186.             {
  187.                 error=4;
  188.                 b=1;
  189.             }
  190.         };
  191.     }
  192.     else
  193.         error=5;
  194.     return error;
  195.     //TERMINADO
  196. }
  197. //Funcion cargar Marcas
  198. void CargaMarca (Marca ArrMarca[MAXCH],int *DimArr,int CM,char Des[MAXCH])
  199. {
  200.     *DimArr=*DimArr+1;
  201.     ArrMarca[*DimArr].CM=CM;
  202. //    ArrMarca[*DimArr].Desc=Des[MAXCH];
  203. }
  204. //Funcion de control de errores.
  205. void ControlError(int error)
  206. {
  207.     //TERMINADO
  208.     int b[10], i=0;
  209.     //Guardo el resto de la division de error/2 en el array b para convertirlo en binario
  210.     while(error>1)
  211.     {
  212.         b[i]=(error%2);
  213.         i++;
  214.         error=(error/2);
  215.     }
  216.     b[i]=1;
  217.     //Me muevo a través del array de atras hacia adelante
  218.     //NO TERMINADO
  219.     while(i>(-1))
  220.     {
  221.      //printf("%d", b[i]);
  222.      if(b[i]==1)
  223.      {
  224.          switch(i)
  225.          {
  226.              case 0:
  227.              {
  228.                  printf("Error 0 (1)\n");
  229.                  break;
  230.              }
  231.              
  232.              case 1:
  233.              {
  234.                  printf("Error 1 (2): Descripcion vacia\n");
  235.                  break;
  236.              }
  237.              case 2:
  238.              {
  239.                  printf("Error 2 (4): El codigo de marca existente\n");
  240.                  break;
  241.              }
  242.              case 3:
  243.              {
  244.                  printf("Error 3 (8)\n");
  245.                  break;
  246.              }                
  247.              case 4:
  248.              {
  249.                  printf("Error 4 (16)\n");
  250.                  break;
  251.              }
  252.              case 5:
  253.              {
  254.                  printf("Error 5 (32)\n");
  255.                  break;
  256.              }
  257.              case 6:
  258.              {
  259.                  printf("Error 6 (64)\n");
  260.                  break;
  261.              }
  262.              case 7:
  263.              {
  264.                  printf("Error 7 (128)\n");
  265.                  break;
  266.              }
  267.              case 8:
  268.              {
  269.                  printf("Error 8 (256)\n");
  270.                  break;
  271.              }
  272.              default:
  273.              {
  274.                  
  275.              }
  276.          }
  277.      }
  278.      i--;
  279.     }
  280.     //TERMINADO
  281. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement