需求:多选或错选不得分、不倒扣分;少选但选择正确的每个选项得0.5分,未对全部答案时最高得分数小于该题得分0.5分。
function TForm1.GetDuoXuanUsersScore(reply,answer:string;Score:Double):Double; var userScore:Double; i:Integer; begin if reply<>answer then begin for I := 0 to Length(reply) – 1 do begin if Pos(Copy(reply,i+1,1),answer)>0 then //如果 回答存在于答案中 begin userScore:=userScore+0.5; end else //只要有答案错的,等0分 begin Result:=0; Exit; end; end; if userScore>=Score then //如果大于或者原来的分数(总分值比较低,选项比较多的时候),那就等于原来的分数 begin if Length(reply)<> Length(answer) then //选不全的情况最高分是总分-0.5分 userScore:=Score-0.5 else //这种是答案顺序排乱的情况,但是选择全部正确,所以是满分 userScore:=Score; end; end else begin userScore:=Score; end; Result:=userScore; end; |
一个计算多选题最终得分的函数