Task Description
Write a program to calculate the payment of your order on an online shopping platform. Your order has items you want to buy and the quantity of each item. For each item you first find out its price and multiply the price by the number you buy. Some items are on sale, meaning that they have a 20% discount, so you need to check a table to see if the items are on sale. You then sum up the payment for all items to get the total payment. Finally, if the total payment is less than $\$490.00$, you will have to pay another $\$80$ for shipping, otherwise you get free shipping.
Please write a function to compute the total payment (including the shipping).
The prototype of payment.h
is as follows.
double
payment(
int
itemID[],
double
price[],
int
orderItemID[],
int
orderQuantity[],
int
onSaleItemID[]);
Each item has a unique item ID. $itemID$ has the item IDs you can buy, and $price$ has the price of each item in $itemID$. $orderItemID$ has the item IDs in your order. $orderQuantity$ has the number of each item you want to by in $orderItemID$. $onSaleItemID$ has the item IDs that are on sale. All these arrays ends with 0, so you can check the array length by yourself. Your order may be incorrect. That is, there may be some item IDs in $orderItemID$ but not in $itemID$, so you just ignore them in your order.
You can use the following main.c
to test your function:
#include <stdio.h>
#include "payment.h"
#define MAXN 20000
int
main(
int
argc,
char
const
*argv[])
{
int
itemID[MAXN+1], orderItemID[MAXN+1], orderQuantity[MAXN+1], onSaleItemID[MAXN+1];
double
price[MAXN+1];
int
itemCnt, orderCnt, onSaleCnt;
scanf
(
"%d%d%d"
, &itemCnt, &orderCnt, &onSaleCnt);
for
(
int
i = 0; i < itemCnt; i++) {
scanf
(
"%d%lf"
, &itemID[i], &price[i]);
}
itemID[itemCnt] = 0, price[itemCnt] = 0;
for
(
int
i = 0; i < orderCnt; i++) {
scanf
(
"%d%d"
, &orderItemID[i], &orderQuantity[i]);
}
orderItemID[orderCnt] = 0, orderQuantity[orderCnt] = 0;
for
(
int
i = 0; i < onSaleCnt; i++) {
scanf
(
"%d"
, &onSaleItemID[i]);
}
onSaleItemID[onSaleCnt] = 0;
double
pay = payment(itemID, price, orderItemID, orderQuantity, onSaleItemID);
printf
(
"%.1lf\n"
, pay);
return
0;
}
Input Format
The first line has three integers $a$, $b$, $c$. The next $a$ lines are the IDs in $itemID$ and prices in $price$. The next $b$ lines are the IDs in $orderItemID$ and numbers in $orderQuantity$. The next $c$ lines are the IDs in $onSaleItemID$.
- $0\lt a,b,c\lt 20000$
Output Format
All computation must be in double, and the return value of the function is also double.
Sample Input
3 2 2
10435 18.0
10472 16.0
11111 200.0
10435 8
10472 7
10435
11111
Sample Output
307.2