Readme

收益计算程序


作者:张雷   邮箱:[email protected] 电话:18844548996


适用范围:仅适用与ThoughtWorks 2017年校园招聘作业。

开发语言:C/C++   开发环境:Windows Code::Blocks 12.11


程序方法:

(一)int carculateT(string str)    用于计算活动所需场地个数  输入活动 输出场地数   计算规则

T           X       订场策略

0         <4      取消活动

0        >=4     共订1个场

1        任意    共订2个场

2或3  >=4     多订一个场

>3     任意      不多订场

(二)int week(string str)      用于计算活动日期计算某年某月某日是星期几  输入活动 输出星期  计算公式

计算星期几的公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

注意:在公式中有个不同的地方:把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算

(三)int pay(string str,int W)    计算活动时间内租用一块场地活动所用的资金。

活动时间先分是周一到周五还是周末另外活动时段可能占两个不同收费时间段也可能一个都要分类分析。

1. 周一到周五:

9:00 ~ 12:00 30元/时

12:00 ~ 18:00 50元/时

18:00 ~ 20:00 80元/时

20:00 ~ 22:00 60元/时

2. 周六及周日

9:00 ~ 12:00 40元/时

12:00 ~ 18:00 50元/时

18:00 ~ 22:00 60元/时


使用方法:

运行程序   输入数据

每一行代表一次活动,其格式为{活动时间yyyy-MM-dd HH:mm~HH:mm} {人数}

一共有未知行数据    结束时 按 Ctrl+z  结束输入。

例如:输入数据

2016-06-02 20:00~22:00 7

2016-06-03 09:00~12:00 14

2016-06-04 14:00~17:00 22

2016-06-05 19:00~22:00 3

2016-06-06 12:00~15:00 15

2016-06-07 15:00~17:00 12

2016-06-08 10:00~13:00 19

2016-06-09 16:00~18:00 16

2016-06-10 20:00~22:00 5

2016-06-11 13:00~15:00 11

^Z

注意结束输入 需要按 Ctrl+z 结束输入

程序输出:

2016-06-02 20:00~22:00 +210 -240 -30

2016-06-03 09:00~12:00 +420 -180 +240

2016-06-04 14:00~17:00 +660 -600 +60

2016-06-05 19:00~22:00 +0 -0 0

2016-06-06 12:00~15:00 +450 -300 +150

2016-06-07 15:00~17:00 +360 -200 +160

2016-06-08 10:00~13:00 +570 -330 +240

2016-06-09 16:00~18:00 +480 -300 +180

2016-06-10 20:00~22:00 +150 -120 +30

2016-06-11 13:00~15:00 +330 -200 +130

Total Income: 3630         一段时间内全部收入

Total Payment: 2470        需要支付场馆费用

Profit: 1160                       这段利润


测试样例:程序范例如上不再赘述

一:

2016-10-16 10:00~12:00 8

2016-10-16 13:00~15:00 13

2016-10-16 17:00~20:00 20

2016-10-17 09:00~10:00 3

2016-10-17 10:00~13:00 16

2016-10-17 13:00~16:00 19

2016-10-17 17:00~19:00 23

2016-10-17 19:00~22:00 30

^Z

2016-10-16 10:00~12:00 +240 -160 +80

2016-10-16 13:00~15:00 +390 -200 +190

2016-10-16 17:00~20:00 +600 -510 +90

2016-10-17 09:00~10:00 +0 -0 0

2016-10-17 10:00~13:00 +480 -330 +150

2016-10-17 13:00~16:00 +570 -450 +120

2016-10-17 17:00~19:00 +690 -520 +170

2016-10-17 19:00~22:00 +900 -1000 -100

Total Income: 3870

Total Payment: 3170

Profit: 700

二:

2016-10-11 11:00~13:00 6

2016-10-12 12:00~15:00 7

2016-10-12 17:00~19:00 13

2016-10-13 18:00~20:00 16

2016-10-14 19:00~22:00 19

2016-10-15 09:00~11:00 23

2016-10-15 11:00~13:00 24

2016-10-15 17:00~20:00 25

2016-10-16 13:00~15:00 3

2016-10-16 20:00~22:00 5

2016-10-17 09:00~12:00 12

2016-10-17 20:00~22:00 18

^Z

2016-10-11 11:00~13:00 +180 -160 +20

2016-10-12 12:00~15:00 +210 -300 -90

2016-10-12 17:00~19:00 +390 -260 +130

2016-10-13 18:00~20:00 +480 -480 0

2016-10-14 19:00~22:00 +570 -600 -30

2016-10-15 09:00~11:00 +690 -320 +370

2016-10-15 11:00~13:00 +720 -360 +360

2016-10-15 17:00~20:00 +750 -680 +70

2016-10-16 13:00~15:00 +0 -0 0

2016-10-16 20:00~22:00 +150 -120 +30

2016-10-17 09:00~12:00 +360 -180 +180

2016-10-17 20:00~22:00 +540 -360 +180

Total Income: 5040

Total Payment: 3820

Profit: 1220


验证程序正确性:

以第二个测试样例来验证程序正确性

先计算每个活动所需场地数 在计算小明income   然后场地费用payment  最后利益

n为活动参加人数 t为可以立即确定的场地数 t=n/6   x为剩余人数  求出活动所需场地数T


2016-10-11 11:00~13:00 6      t=1 x=0 T=2  income=30*6=180   payment=30*2+50*2=160 profit=20

2016-10-12 12:00~15:00 7      t=1 x=1 T=2  income=30*7=210  payment=50*2*3=300 profit=-90

2016-10-12 17:00~19:00 13    t=2 x=1 T=2  income=30*13=390  payment=80*2*1+50*2*1=260 profit=130

2016-10-13 18:00~20:00 16      t=2 x=4 T=3 income=30*16=480  payment=80*3*2=480 profit=0

2016-10-14 19:00~22:00 19      t=3 x=1 T=3 income=30*19=570  payment=80*3*1+60*3*2=600 profit=570-600=-30

2016-10-15 09:00~11:00 23      t=3 x=5 T=4 income=30*23=690  payment=40*4*2=320 profit=690-320=360

2016-10-15 11:00~13:00 24      t=4 x=0 T=4  income=30*24=720  payment=40*4*1+50*4*1=360 profit=720-360=360

2016-10-15 17:00~20:00 25      t=4 x=1 T=4 income=30*25=750  payment=50*4*1+60*4*2=680 profit=750-680=70

2016-10-16 13:00~15:00 3      t=0 x=3 T=0   income=0  payment=0 profit=0

2016-10-16 20:00~22:00 5      t=0 x=5 T=1  income=30*5=150  payment=60*1*2=120 profit=150-120=30

2016-10-17 09:00~12:00 12      t=2 x=0 T=2 income=30*12=360  payment=30*3*2=180 profit=360-180=180

2016-10-17 20:00~22:00 18      t=3 x=0 T=3 income=30*18=540  payment=60*3*2=360 profit=540-360=180

则sincome=5040  spayment=3820   profit 1220

实际运算与程序运算相同

本文链接:

你可能感兴趣的:(Readme)