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