一个计算多选题最终得分的函数

需求:多选或错选不得分、不倒扣分;少选但选择正确的每个选项得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;

 

一个计算多选题最终得分的函数

发表评论

邮箱地址不会被公开。 必填项已用*标注

滚动到顶部