SHARE
TWEET

Untitled

a guest Oct 21st, 2019 61 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>//Biblioteca estándar de entrada y salida, para utilizar cout y cin
  2. #include <stdio.h>
  3. #include <stdlib.h>/*Biblioteca para utilizar system("cls") limpieza de pantalla y system("pause") que detiene la ejecución del programa hasta que el usuario digite una tecla */
  4. #include <conio.h> //
  5. #include <windows.h>// para utilizar la funcion sleep y copy
  6. #include <string.h>// libreria para utilizar la funcion que compara dos cademas
  7. #include <time.h>
  8. using namespace std;
  9.  
  10.  
  11. #define MAX_PRODUCTOS 100 // CANTIDAD MAXIMA DE PRODUCTOS PARA DEFINIR.
  12.  
  13. int PROD_DEF = 5; // PRODUCTOS DEFINIDOS.
  14.  
  15.  
  16. char productos[MAX_PRODUCTOS][30] = // ARREGLO DIMENSIONAL DE CARACTERES PARA ALMACENAR EL NOMBRE DE LOS PRODUCTOS.
  17. {
  18. "Soda",  // 0
  19. "Hamburguesa", // 1
  20. "Papas Fritas", // 2
  21. "Doritos", // 3
  22. "Palomitas"  // 4
  23. };
  24.  
  25. int precios[MAX_PRODUCTOS] = { // ARREGLO DE ENTEROS PARA ALMACENAR LOS PRECIOS
  26. 1, // soda
  27. 3, // hamburguesa
  28. 2, // papas fritas
  29. 3, //doritos
  30. 5 //palomitas
  31. };
  32.  
  33. char fechas[MAX_PRODUCTOS][30] = { // ARREGLO DIMENSIONAL DE CARACTERES PARA ALMACENAR LAS FECHAS DE LOS PRODUCTOS.
  34. "Mon Oct 14 07:53:05 2019",
  35. "Mon Oct 14 07:53:05 2019",
  36. "Mon Oct 14 07:53:05 2019",
  37. "Mon Oct 14 07:53:05 2019",
  38. "Mon Oct 14 07:53:05 2019"
  39. };
  40.  
  41. int registrar_producto(char *prod_name, int prod_precio);
  42. void mostrar_productos();
  43. int modificar_producto(int prod_id, char *prod_name, int prod_precio);
  44.  void ordenar_productos();
  45.  
  46. main()
  47. {
  48.  
  49.  
  50.     int opc;//Declaración de variable de tipo entero
  51.  
  52.     do{ system("cls");
  53.           char *name = (char *)malloc(sizeof(char)*30); // ASIGNAMOS MEMORIA DINAMICA CON MALLOC AL PUNTERO NAME, le reservamos 30 bytes de memoria.
  54.   int price = 0; // INICIAMOS VARIABLE PRICE en 0
  55.   int id_mod = 0; // INICIAMOS VARIABLE ID_MOD En 0
  56.         cout<<"\tEMPRESA ALMAFIN S.A"<<endl;
  57.         cout<<"\t ALMACEN"<<endl<<endl;
  58.         cout<<"MENU DE OPCIONES"<<endl<<endl;
  59.         cout<<" 1. Registrar articulos. "<<endl;
  60.         cout<<" 2. Ver lista de articulos. "<<endl;
  61.         cout<<" 3. Modificar articulos. "<<endl;
  62.         cout<<" 4. Ordenar productos. " <<endl;
  63.         cout<<" 5. Salir. "<<endl;
  64.         cout<<endl<<endl<<" Por favor elija una de las opciones: "<<endl<<endl;
  65.         cin>>opc;
  66.     switch(opc)
  67. {
  68.     case 1: system("cls");
  69.         cout<<endl<<"1. Registrar articulo " <<endl;
  70.    
  71. cout << "ingresa el nombre del producto nuevo: ";
  72.  cin >> name;
  73. cout << "ingresa el precio del nuevo producto: ";
  74. cin >> price;
  75. registrar_producto(name, price); // USAMOS LA FUNCION REGISTRAR_PRODUCTO CON SUS ARGUMENTOS
  76. cout << "ID:" << PROD_DEF-1 << "- Nombre: " << productos[PROD_DEF-1] << " - precio: " << precios[PROD_DEF-1] << " - Fecha de registro: " << fechas[PROD_DEF-1]<< endl;
  77. opc = 0;
  78.         system("pause");//Detiene la ejecución del programa hasta que el usuario digite una tecla
  79.         break;
  80.    
  81.     case 2: system("cls");
  82.         cout<<endl<<"2. Ver lista de articulos. "<<endl;
  83.         mostrar_productos(); // USAMOS LA FUNCION MOSTRAR_PRODUCTOS
  84.         opc = 0;
  85.         system("pause");//Detiene la ejecución del programa hasta que el usuario digite una tecla
  86.         break;
  87.    
  88.         case 3: system("cls");
  89.         cout<<endl<<" 3. modificar articulos . "<<endl;
  90.         cout << "ingresa el ID del producto a modificar: ";
  91.         cin >> id_mod;
  92. cout << "ingresa el nuevo nombre del producto: ";
  93.  cin >> name;
  94. cout << "ingresa el nuevo precio del producto: ";
  95. cin >> price;
  96. modificar_producto(id_mod, name, price);  // USAMOS LA FUNCION DEFINIDA CON SUS RESPECTIVOS ARGMENTOS:
  97.         opc = 0;
  98.         system("pause");//Detiene la ejecución del programa hasta que el usuario digite una tecla
  99.         break;
  100.        case 4:
  101.         ordenar_productos();
  102.         opc = 0;
  103. break;
  104.         default:
  105.         break;
  106. }
  107. }
  108.     while(opc!=4);
  109.  
  110.   system("pause");
  111. return 0;
  112. }
  113.  
  114. void mostrar_productos(){
  115. for(int i = 0; i != PROD_DEF; i++){
  116. cout << "ID: " <<i<<" - Nombre: " <<productos[i]<< " - Precio:"<< precios[i] << " Fecha de registro:" << fechas[i] <<endl;
  117. }
  118. }
  119.  
  120.  
  121. void ordenar_productos(){
  122.    //Ordenando nombres
  123.    char temp_prod[PROD_DEF][30];
  124.     for ( int i = 0; i < PROD_DEF; i++ ){
  125.         for ( int j = i + 1; j < PROD_DEF; j++ ){
  126.  
  127.             // strcoll() devuelve -1 si el 1º parametro es mayor que el 2º, 0 si el 1º es igual al 2º, o
  128.             //1 si el 1º mayor que el 2º. Lo hace caracter a caracter hasta encontrar una diferencia o un nulo que es cuando retorna uno de los valores mensionados.    
  129.             if ( ( strcoll(productos[i], productos[j]) ) > 0 ) {  
  130.  
  131.                 //esto va subiendo los nombres a la cabeza de la lista
  132.                 strcpy ( temp_prod[i], productos[i] );
  133.                 strcpy ( productos[i], productos[j] );
  134.                 strcpy ( productos[j], temp_prod[i] );
  135.             }
  136.         }
  137.     }
  138. for(int i = 0; i != PROD_DEF-1; i++) cout << temp_prod[i] << "-->" << productos[i] << endl;
  139.  
  140. }
  141.  
  142. int modificar_producto(int prod_id, char *prod_name, int prod_precio){ // Definimos una funcion similar a registrar_producto,pero que modifique los valores anteriores.
  143. time_t   t,i;
  144. char *prod_time;
  145. i = time (&t);
  146. prod_time = ctime (&i);
  147.  
  148. for(int i = 0; i != PROD_DEF-1; i++){
  149. if(strcmp(prod_name, productos[i]) == 0){
  150. cout <<"Ya existe el producto " << prod_name <<". (ID:" << i <<")" << endl;
  151. return 1; // FALLA MODIFICACION
  152. }
  153. }
  154. for(int i = 0; i != 30; i++) productos[prod_id][i] = 0x00; // LLENAR DE VACIOS LA VARIABLE PRODUCTOS[PROD_REF] (PROD_REF ES EL ID DE PRODUCTO)
  155. for(int i = 0; i != 30; i++) fechas[prod_id][i] = 0x00; // LLENAR DE VACIOS LA VARIABLE FECHAS
  156.  
  157. sprintf(productos[prod_id], "%s", prod_name);
  158. precios[prod_id] = prod_precio;
  159. sprintf(fechas[prod_id], "%s", prod_time);
  160. return 0; // MODIFICACION EXITOSA
  161. }
  162.  
  163.  
  164. int registrar_producto(char *prod_name, int prod_precio){ // Definimos una funcion que recibe dos argumentos.
  165.         time_t   t,i; // llamamos al tipo de dato time_t (definido en time.h)
  166.     char *prod_time; // creamos un puntero/apuntador de caracteres.
  167.     i = time (&t); // Usamos la funcion de la libreria time.h
  168.     prod_time = ctime (&i); // con la tora funcion de time.h lo convertimos en caracteres que podamos leer.
  169. for(int i = 0; i != PROD_DEF-1; i++){ // Iniciamos un ciclo for para que verifique todos los arreglos DEFINIDOS(PROD_DEF) de productos[ID]
  170. if(strcmp(prod_name, productos[i]) == 0){  // CON strcmp de la libreria string.h verificamos que el argumento prod_name no sea = a algun producto[ID] ya definido.
  171. cout <<"Ya existe el producto " << prod_name <<". (ID:" << i <<")" << endl;  // Si ya existe imprimimos esto.
  172. return 1; // FALLA CREACION // Y retornamos un uno a la funcion registrar_producto.
  173. }
  174. }
  175.  
  176. sprintf(productos[PROD_DEF], "%s", prod_name); // Usamos sprintf para imprimir dentro de productos[ID] (PROD_DEF), el contenido del argumento prod_name.
  177. precios[PROD_DEF] = prod_precio; //Le damos el valor del argumento INT prod_precio a precios[ID] (Prod_def)
  178. sprintf(fechas[PROD_DEF], "%s", prod_time); // Como en el sprintf anterior, pero con fecha. Le damos el valor del apuntador/puntero prod_time
  179. PROD_DEF++; // AUMENTAMOS EL NUMERO DE PRODUCTOS YA DEFINIDOS.
  180. return 0; // CREACION EXITOSA
  181. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top