多项条件求和

来源:百度知道 编辑:UC知道 时间:2024/06/18 15:25:40
台帐

销售单位:
日期 品名 领取人 金额
20090405 A 杨1 11,000
20090409 B 杨2 11,000
20090409 C 杨3 30,000
20090413 A 杨1 4,000
20090415 B 杨2 3,000
20090415 C 杨3 5,000
20090413 C 杨1 5,000
20090415 A 杨2 10,000
20090417 C 杨3 5,000
20090419 A 杨1 10,000
20090421 B 杨2 11,000
20090423 C 杨3 30,000
20090425 A 杨1 4,000
20090427 B 杨2 3,000
20090429 C 杨3 5,000
20090430 C 杨1 5,000
20090401 A 杨2 10,000
20090402 C 杨3 5,000
20090403 A 杨1 10,000
求出以下条件

日期 品名 领取人 金额
20090401-20090410 A 杨1 合计数?
20090411-20090420 A 杨2 合计数?
20090421-20090430 A 杨3 合计数?
20090401-20090410 B 杨1 合计数?
20090411-20090420 B 杨2 合计数?
20090421-20090430 B 杨3 合计数?
20090401-20090410 C 杨1 合计数?
20090411-20090420 C 杨2 合计数?
20090421-20090430 C 杨3 合计数?

按字符串读入日期,ABC, 名,数值。
如果 日期字符串 小于等于 20090410 就是杨1的,按ABC 分别累加到 x[0],x[3],x[6]
如果 日期字符串 大于等于 20090421 就是杨3的,按ABC 分别累加到 x[2],x[5],x[8]
不符合上两类的,按ABC 分别累加到 x[1],x[4],x[7]

char s1[10],s2[10],s3[10];
float f;
float x[9];
int i;
for (i=0;i<9;i++) x[i] = 0;
//loop read data
while(1) {
scanf("%s %s %s %f",s1,s2,s3,&f);
// printf("%s %s %s %f",s1,s2,s3,f);
// if .. break; 设条件,输入结束

if ( strcnmp(s1,"20090410",8) <=0 ) {
if ( strncmp(s2,"A",1) == 0 ) x[0] =x[0] + f;
if ( strncmp(s2,"B",1) == 0 ) x[3] =x[3] + f;
if ( strncmp(s2,"A",1) == 0 ) x[6] =x[6] + f;
} else if ( strcnmp(s1,"20090421",8) >=0 ) {
if ( strncmp(s2,"A",1) == 0 ) x[1] =x[1] + f;
if ( strncmp(s2,"B",1) == 0 ) x[4] =x[4] + f;
if ( strncmp(s2,"A",1) == 0 ) x[7] =x[7] + f;
} else {
if ( strncmp