modified purchase function

This commit is contained in:
Win 2024-09-05 12:49:56 +07:00
parent 76c22938c1
commit 2944612155
2 changed files with 38 additions and 25 deletions

Binary file not shown.

View File

@ -15,7 +15,8 @@
#define MAX_VENDORS 20
#define MAX_FILENAME_LENGTH 4096
struct vendor_item
/* STRUCTURES */
struct vendor
{
char vendor_name[20];
char merchandise[15];
@ -23,22 +24,35 @@ struct vendor_item
int item_price_baht;
} vendors[MAX_VENDORS];
struct purchase_res
struct search_r
{
int status;
int item_id;
};
struct purchase_r
{
int status;
char vendor_name[20];
int price_owe_baht;
};
/* FUNCTION DECLARATION */
int read_input(char str[], int n);
int search(char query[],
struct vendor_item vendors[MAX_VENDORS],
int total_vendors);
struct search_r search
(
char query[],
struct vendor vendors[MAX_VENDORS],
int total_vendors
);
struct purchase_res purchase(int item_id,
struct purchase_r purchase
(
int item_id,
int amount,
struct vendor_item vendors[MAX_VENDORS]);
struct vendor vendors[MAX_VENDORS]
);
int main()
{
@ -120,9 +134,8 @@ int main()
user_query[i] = tolower(user_query[i]);
};
int item_id = search(user_query, vendors, total_vendors);
printf("THING: %d\n", item_id);
if(item_id > 0)
struct search_r item = search(user_query, vendors, total_vendors);
if(item.status == 0)
{
char input[10];
read_input(input, 10);
@ -130,7 +143,7 @@ int main()
if(atoi(input) < 0)
{
int item_amount = atoi(input);
struct purchase_res response = purchase(item_id, item_amount, vendors);
struct purchase_r response = purchase(item.item_id, item_amount, vendors);
if (response.status == 0)
{
@ -194,28 +207,28 @@ int read_input(char str[], int n)
*/
/* TO-DO IMPLEMENT RESPONSE STRUCT */
int search(char query[], struct vendor_item vendors[MAX_VENDORS], int total_vendors)
struct search_r search(char query[], struct vendor vendors[MAX_VENDORS], int total_vendors)
{
int i;
for (i = 0; i < total_vendors; i++)
{
printf("Step: %d\n", i);
if (strcmp(query, vendors[i].merchandise) == 0)
{
printf("\nQuery: %s | Result: %s %s\n",
query,
vendors[i].vendor_name,
vendors[i].merchandise
);
return i;
struct search_r response;
response.status = 0;
response.item_id = i;
return (response);
break;
};
};
if (i == total_vendors)
{
printf("THING: %d %d", i, total_vendors);
return 0;
struct search_r response;
response.status = 1;
response.item_id = 0;
return (response);
}
};
@ -230,14 +243,14 @@ int search(char query[], struct vendor_item vendors[MAX_VENDORS], int total_vend
Return values:
-
*/
struct purchase_res purchase(int item_id, int amount, struct vendor_item vendors[MAX_VENDORS])
struct purchase_r purchase(int item_id, int amount, struct vendor vendors[MAX_VENDORS])
{
if(amount <= vendors[item_id].inventory_count)
{
// Decrease vendor inventory
vendors[item_id].inventory_count = vendors[item_id].inventory_count - amount;
struct purchase_res response;
struct purchase_r response;
response.status = 0;
strcpy(response.vendor_name, vendors[item_id].vendor_name);
@ -247,7 +260,7 @@ struct purchase_res purchase(int item_id, int amount, struct vendor_item vendors
}
else
{
struct purchase_res response;
struct purchase_r response;
response.status = 1;
return response;