Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>//Biblioteca estándar de entrada y salida, para utilizar cout y cin
- #include <stdio.h>
- #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 */
- #include <conio.h> //
- #include <windows.h>// para utilizar la funcion sleep y copy
- #include <string.h>// libreria para utilizar la funcion que compara dos cademas
- #include <time.h>
- using namespace std;
- #define MAX_PRODUCTOS 100 // CANTIDAD MAXIMA DE PRODUCTOS PARA DEFINIR.
- int PROD_DEF = 5; // PRODUCTOS DEFINIDOS.
- char productos[MAX_PRODUCTOS][30] = // ARREGLO DIMENSIONAL DE CARACTERES PARA ALMACENAR EL NOMBRE DE LOS PRODUCTOS.
- {
- "Soda", // 0
- "Hamburguesa", // 1
- "Papas Fritas", // 2
- "Doritos", // 3
- "Palomitas" // 4
- };
- int precios[MAX_PRODUCTOS] = { // ARREGLO DE ENTEROS PARA ALMACENAR LOS PRECIOS
- 1, // soda
- 3, // hamburguesa
- 2, // papas fritas
- 3, //doritos
- 5 //palomitas
- };
- char fechas[MAX_PRODUCTOS][30] = { // ARREGLO DIMENSIONAL DE CARACTERES PARA ALMACENAR LAS FECHAS DE LOS PRODUCTOS.
- "Mon Oct 14 07:53:05 2019",
- "Mon Oct 14 07:53:05 2019",
- "Mon Oct 14 07:53:05 2019",
- "Mon Oct 14 07:53:05 2019",
- "Mon Oct 14 07:53:05 2019"
- };
- int registrar_producto(char *prod_name, int prod_precio);
- void mostrar_productos();
- int modificar_producto(int prod_id, char *prod_name, int prod_precio);
- void ordenar_productos();
- main()
- {
- int opc;//Declaración de variable de tipo entero
- do{ system("cls");
- char *name = (char *)malloc(sizeof(char)*30); // ASIGNAMOS MEMORIA DINAMICA CON MALLOC AL PUNTERO NAME, le reservamos 30 bytes de memoria.
- int price = 0; // INICIAMOS VARIABLE PRICE en 0
- int id_mod = 0; // INICIAMOS VARIABLE ID_MOD En 0
- cout<<"\tEMPRESA ALMAFIN S.A"<<endl;
- cout<<"\t ALMACEN"<<endl<<endl;
- cout<<"MENU DE OPCIONES"<<endl<<endl;
- cout<<" 1. Registrar articulos. "<<endl;
- cout<<" 2. Ver lista de articulos. "<<endl;
- cout<<" 3. Modificar articulos. "<<endl;
- cout<<" 4. Ordenar productos. " <<endl;
- cout<<" 5. Salir. "<<endl;
- cout<<endl<<endl<<" Por favor elija una de las opciones: "<<endl<<endl;
- cin>>opc;
- switch(opc)
- {
- case 1: system("cls");
- cout<<endl<<"1. Registrar articulo " <<endl;
- cout << "ingresa el nombre del producto nuevo: ";
- cin >> name;
- cout << "ingresa el precio del nuevo producto: ";
- cin >> price;
- registrar_producto(name, price); // USAMOS LA FUNCION REGISTRAR_PRODUCTO CON SUS ARGUMENTOS
- cout << "ID:" << PROD_DEF-1 << "- Nombre: " << productos[PROD_DEF-1] << " - precio: " << precios[PROD_DEF-1] << " - Fecha de registro: " << fechas[PROD_DEF-1]<< endl;
- opc = 0;
- system("pause");//Detiene la ejecución del programa hasta que el usuario digite una tecla
- break;
- case 2: system("cls");
- cout<<endl<<"2. Ver lista de articulos. "<<endl;
- mostrar_productos(); // USAMOS LA FUNCION MOSTRAR_PRODUCTOS
- opc = 0;
- system("pause");//Detiene la ejecución del programa hasta que el usuario digite una tecla
- break;
- case 3: system("cls");
- cout<<endl<<" 3. modificar articulos . "<<endl;
- cout << "ingresa el ID del producto a modificar: ";
- cin >> id_mod;
- cout << "ingresa el nuevo nombre del producto: ";
- cin >> name;
- cout << "ingresa el nuevo precio del producto: ";
- cin >> price;
- modificar_producto(id_mod, name, price); // USAMOS LA FUNCION DEFINIDA CON SUS RESPECTIVOS ARGMENTOS:
- opc = 0;
- system("pause");//Detiene la ejecución del programa hasta que el usuario digite una tecla
- break;
- case 4:
- ordenar_productos();
- opc = 0;
- break;
- default:
- break;
- }
- }
- while(opc!=4);
- system("pause");
- return 0;
- }
- void mostrar_productos(){
- for(int i = 0; i != PROD_DEF; i++){
- cout << "ID: " <<i<<" - Nombre: " <<productos[i]<< " - Precio:"<< precios[i] << " Fecha de registro:" << fechas[i] <<endl;
- }
- }
- void ordenar_productos(){
- //Ordenando nombres
- char temp_prod[PROD_DEF][30];
- for ( int i = 0; i < PROD_DEF; i++ ){
- for ( int j = i + 1; j < PROD_DEF; j++ ){
- // strcoll() devuelve -1 si el 1º parametro es mayor que el 2º, 0 si el 1º es igual al 2º, o
- //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.
- if ( ( strcoll(productos[i], productos[j]) ) > 0 ) {
- //esto va subiendo los nombres a la cabeza de la lista
- strcpy ( temp_prod[i], productos[i] );
- strcpy ( productos[i], productos[j] );
- strcpy ( productos[j], temp_prod[i] );
- }
- }
- }
- for(int i = 0; i != PROD_DEF-1; i++) cout << temp_prod[i] << "-->" << productos[i] << endl;
- }
- 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.
- time_t t,i;
- char *prod_time;
- i = time (&t);
- prod_time = ctime (&i);
- for(int i = 0; i != PROD_DEF-1; i++){
- if(strcmp(prod_name, productos[i]) == 0){
- cout <<"Ya existe el producto " << prod_name <<". (ID:" << i <<")" << endl;
- return 1; // FALLA MODIFICACION
- }
- }
- 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)
- for(int i = 0; i != 30; i++) fechas[prod_id][i] = 0x00; // LLENAR DE VACIOS LA VARIABLE FECHAS
- sprintf(productos[prod_id], "%s", prod_name);
- precios[prod_id] = prod_precio;
- sprintf(fechas[prod_id], "%s", prod_time);
- return 0; // MODIFICACION EXITOSA
- }
- int registrar_producto(char *prod_name, int prod_precio){ // Definimos una funcion que recibe dos argumentos.
- time_t t,i; // llamamos al tipo de dato time_t (definido en time.h)
- char *prod_time; // creamos un puntero/apuntador de caracteres.
- i = time (&t); // Usamos la funcion de la libreria time.h
- prod_time = ctime (&i); // con la tora funcion de time.h lo convertimos en caracteres que podamos leer.
- 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]
- 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.
- cout <<"Ya existe el producto " << prod_name <<". (ID:" << i <<")" << endl; // Si ya existe imprimimos esto.
- return 1; // FALLA CREACION // Y retornamos un uno a la funcion registrar_producto.
- }
- }
- sprintf(productos[PROD_DEF], "%s", prod_name); // Usamos sprintf para imprimir dentro de productos[ID] (PROD_DEF), el contenido del argumento prod_name.
- precios[PROD_DEF] = prod_precio; //Le damos el valor del argumento INT prod_precio a precios[ID] (Prod_def)
- sprintf(fechas[PROD_DEF], "%s", prod_time); // Como en el sprintf anterior, pero con fecha. Le damos el valor del apuntador/puntero prod_time
- PROD_DEF++; // AUMENTAMOS EL NUMERO DE PRODUCTOS YA DEFINIDOS.
- return 0; // CREACION EXITOSA
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement