//#define CONTROL_WEIGHT
//#define ORDER_DELIVERY_QUEUE
//#define CONTROL_FRAGILE_PRODUCT
using namespace std;
struct Product {
char productName[50];
char purchaseDate[9];
bool dispatched;
#ifdef CONTROL_WEIGHT
float weight;
#endif
#ifdef CONTROL_FRAGILE_PRODUCT
bool fragileProduct;
#endif
} p[4] ={ {"Shower", "03/03/21", false},
{"Glasses", "04/04/21", false},
{"Lamp", "01/01/21", false},
{"Cement", "02/02/21", false} };
#ifdef ORDER_DELIVERY_QUEUE
void orderDeliveryQueue() {
// This algorithm sorts the p product array considering the purchase date.
// At the end of the algorithm, the product with the oldest purchase date becomes the first element of the array
// and the product with the most recent purchase date becomes the last element of the array.
}
#endif
void dispatchedProduct() {
#ifdef ORDER_DELIVERY_QUEUE
orderDeliveryQueue();
#endif
#ifdef CONTROL_WEIGHT
float limitWeightDelivery = 300;
#endif
#ifdef CONTROL_FRAGILE_PRODUCT
int fragileProductTotal = 0;
#endif
int i, n = 4;
for ( i = 0; i < n; i ++ ) {
if ( !p[i].dispatched ) {
#ifdef CONTROL_FRAGILE_PRODUCT
if ( !p[i].fragileProduct ) {
#endif
#ifdef CONTROL_WEIGHT
if ( p[i].weight < limitWeightDelivery ) {
#endif
printf( "\n Product name: %s", p[i].productName );
printf( "\n Product purchase date : %s", p[i].purchaseDate );
#ifdef CONTROL_WEIGHT
printf("\n Weight: %.2f", p[i].weight);
#endif
#ifdef CONTROL_FRAGILE_PRODUCT
if ( !p[i].fragileProduct ) {
printf("\n fragile product: No");
}
#endif
p[i].dispatched = true;
break;
#ifdef CONTROL_WEIGHT
} else
printf("\n Overweight delivery product! The customer must come to pick the product!");
#endif
#ifdef CONTROL_FRAGILE_PRODUCT
} else
printf("\n Fragile product! The customer must come to pick the product!");
fragileProductTotal++;
#endif
}
if ( i == n - 1 )
printf("\n There are no products to be dispatched!!!");
}
}
int main(){
dispatchedProduct();
return 0;
}