Итак, моя проблема в том, что у меня есть 2 структуры (продукты и заказы), и у меня есть 2 массива продуктов, называемых sistem, и другой, называемый sistem_orders.
Итак, моя проблема в том, что я хочу добавить определенное количество продукт в системе на заказ.
Переменные и структуры:
int i = 0; /* counts the number of products */
int y = 0; /* counts the number of orders */
/* Structures */
typedef struct product
{
int ident;
char desc[64]; /* string that describes a product eg. "bread" */
int price; /* price of the product*/
int weight; /* weight of the product eg. 2kg */
int quant; /* quantity of the product in stock */
int state_prod;
}product;
typedef struct order
{
int ident_o;
product set_prod[200]; /* Set of products */
int state;
}order;
product sistem[10000]; /* array of products */
order sistem_orders[500]; /* array of orders */
Функция:
void A(int ide, int idp,int quant)
{
int peso = 0;
int peso_do_prod = sistem[idp].weight * quant;
if (order_in_system(ide) == 0)
{
printf("Impossible to add product %d to order %d. Order inexistent.\n",idp,ide);
}
else if ((product_in_system(idp) == 0))
{
printf("Impossible to add product %d to order %d. Product inexistent.\n",idp,ide);
}
else
{
if (product_in_order(ide,sistem_orders,idp) == 0)
{
sistem_orders[ide].set_prod[idp] = sistem[idp];
sistem_orders[ide].set_prod[idp].quant = quant;
sistem[idp].quant -= quant;
peso += peso_do_prod;
}
else if (product_in_order(ide,sistem_orders,idp) == 1)
{
if (quant > sistem[idp].quant)
{
printf("Impossible to add product %d to order %d. Insufficient quantity in stock\n",idp,ide);
}
else
{
peso += peso_do_prod;
if (peso < 200)
{
sistem_orders[ide].set_prod[idp].quant += quant;
}
else if (peso > 200)
{
printf("Impossible to add product %d to order %d. Order's weight is over 200\n",idp,ide);
}
}
}
}
}
Дополнительные функции:
int product_in_order(int ide,order s[],int idp)
{
if (s[ide].set_prod[idp].state_prod == 1)
{
return 1;
}
else
{
return 0;
}
}
int product_in_system(int idp)
{
if (sistem[idp].state_prod == 1)
{
return 1;
}
else
{
return 0;
}
}
int order_in_system(int ide)
{
if (sistem_orders[ide].state == 1)
{
return 1;
}
else
{
return 0;
}
}
Мой ввод:
Adds a product into to the system with description: bread, price: 73, weight: 6, quantity: 75 //creates a product, it creates a product and adds it into the sistem with ID: i (in this case 0)
Adds a product into to the system with description: eggs, price: 85, weight: 9, quantity: 21
Adds a product into to the system with description: bacon, price: 46, weight: 1, quantity: 9
Adds a product into to the system with description: bacon, price: 45, weight: 4, quantity: 80
N //creates an order, it creates an order and adds it into the sistem_orders with ID: y (in this case 0)
N //New order 1
N //New order 2
N //New order 3
Adds quantity of 81 of the 3rd product into the 3rd order
x //an exit command
Мой вывод:
New product 0.
New product 1.
New product 2.
New product 3.
New order 0.
New order 1.
New order 2.
New order 3.
Правильный вывод:
New product 0.
New product 1.
New product 2.
New product 3.
New order 0.
New order 1.
New order 2.
New order 3.
Impossible to add product 3 to order 3. Insufficient quantity in stock.
Так что в принципе это означает, что я не могу добавить третий продукт в порядок, потому что его количество равно 81, что больше, чем у меня в системе.
Но почему-то он даже не go в этом цикле, и я не могу понять, что не так в этом функция.
Так что, если кто-нибудь может мне помочь, я был бы очень признателен.