Ordenamiento de Productos en C++: Burbuja con Clases, Vectores de Punteros y Control de Inventario en una Farmacia

Informática y Telecomunicaciones3,39 KB

Ordenamiento de productos en C++ con clases y punteros

A continuación se muestra el código que implementa el ordenamiento burbuja de los productos de una farmacia según su nombre, así como la función principal que permite ingresar los productos, clasificarlos por tarifa y calcular el valor del inventario.

Método de ordenamiento de productos

for (int i = 0; (i < (nProdTar0 - 1)); i++)  // ciclo del pivote
    for (int j = (i + 1); (j < nProdTar0); j++) {  // ciclo de recorrido de los elementos a comparar
        aux1 = ((productos[i])->getNombre());  // el operador -> se utiliza para acceder a la posición de memoria
        aux2 = ((productos[j])->getNombre());  // extrae los nombres de los productos
        if (aux1.compare(aux2) > 0) {  // está desordenado
            oAux = productos[i];
            productos[i] = productos[j];
            productos[j] = oAux;
        }  // del compare
    }  // del for j
}  // de ordenarProductosTar0
};  // de la clase cFarmacia

Función principal

void main() {  // función principal
    system("color 05");

    int NumProd(int limite);  // prototipo de la función que ingresa la cantidad de productos a procesar
    int tipoProd;  // permite al usuario definir productos de tarifa 0 y 12
    int contTar0 = 0, contTar12 = 0;

    cTarifa0 leerProdTar0(cFecha oFechaAct);  // prototipo de la función que ingresa los datos de un producto tarifa 0
    cTarifa12 leerProdTar12(cFecha oFechaAct);  // prototipo de la función que ingresa los datos de un producto tarifa 12
    void imprimirProdTar0(cProducto *oAux);  // prototipo de la función que imprime los datos de un producto tarifa 0
    void imprimirProdTar12(cProducto *oAux);  // prototipo de la función que imprime los datos de un producto tarifa 12

    cFarmacia oF;  // instanciar el objeto farmacia
    cFecha oFecAux;  // auxiliar para lectura de fecha actual

    cout << endl << "FECHA ACTUAL";
    // lectura de la fecha actual
    oFecAux.leerFecha();  // llamado al método de ingreso de la fecha actual
    oF.setFechaAct(oFecAux);  // llamado al método de actualización de la fecha actual

    cout << endl << "PRODUCTOS";
    oF.setNproductoTar0(NumProd(9999));

    for (int i = 0; (i < oF.getNproductoTar0()); i++) {  // ciclo de recorrido del vector de productos tarifa 0
        do {
            cout << endl << "Producto Tar <0> o <12>: ";
            cin >> tipoProd;
        } while (!((tipoProd == 0) || (tipoProd == 12)));  // repetir si ingresan valores no válidos

        if (tipoProd == 0) {  // es producto tarifa 0
            oF.setProdTar0(leerProdTar0(oF.getFechaActual()), i);  // almacena el producto leído en la posición i del vector de tarifa 0
            // acumulación del valor del inventario de la farmacia
            oF.setValorInventario(oF.getValorInventario() + (oF.getProdTar0(i)->getStock() * oF.getProdTar0(i)->getPrecioVenta()));
        } else {  // es producto tarifa 12%
            oF.setProdTar12(leerProdTar12(oF.getFechaActual()), i);  // almacena el producto leído en la posición i del vector de tarifa 12
            oF.setValorInventario(oF.getValorInventario() + (oF.getProdTar12(i)->getStock() * oF.getProdTar12(i)->getPrecioVenta()));
        }  // del else
    }  // del for i
}

Descargar

PDF Word HTML