Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.18 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement