多选判断题的判断。

/**
* 判断用户的选择数组 用答案的数组来对比
*
* @param userChoeseArray 这个是用户的选择数组
* @param answerArray 这个是答案数组
*/
-(void)judgeUserChoeseArray:(NSArray )userChoeseArray WithAnswerArray:(NSArray )answerArray
{
NSUInteger result=2;

/**
 *  先根据选择的个数进行判断,当个数相等的时候,全对,就是全对了,只要有错的,就是错的。
 */
if (answerArray.count==userChoeseArray.count) {
    /**
     *  相等的情况下,先建立一个数组,这个数组来记录对比效果。
     */
    NSMutableArray *equltArray=[NSMutableArray array];
    for (int i=0; i<answerArray.count; i++) {
        [equltArray addObject:[NSNumber  numberWithBool:NO]];
    }
    /**
     *  分别取出每一个元素,进行对比,先定为全错,只要有相等的就好了,就进行记录。
     */
    for (int i=0; i<answerArray.count ; i++) {

        NSString *answerString=answerArray[i];

        for (int j=0; j<userChoeseArray.count; j++) {

            NSString *userString=userChoeseArray[j];

            if ([userString isEqualToString:answerString]) {
                /**
                 *  这里相等,那么记录下相等的结果。
                 */
                NSNumber *munber=equltArray[i];
                BOOL eqult=[munber boolValue];
                eqult=YES;
                equltArray[i]=[NSNumber numberWithBool:eqult];
            }
        }
    }

    /**
     *  判断是否是有错的,如果没有错的,就是全对,否者就是没有全对。
     */
    //第一步是否全部是Yes
    BOOL AllYes=YES;
    for (NSNumber *eqult in equltArray) {
        BOOL equltBool=[eqult boolValue];
        if (equltBool==NO) {
            AllYes=NO;
        }
    }
    /**
     *  当全对时,就是全对,否则就是错的。
     */
    if (AllYes==YES) {
        result=0;
    }else {
        result=2;
    }
}else if(userChoeseArray.count>answerArray.count ){
    /**
     *  当用户的选择个数大于答案的个数的时候肯定是错的。
     */
    result=2;
}else{

    //  当用户的选择个数小于答案的个数,已经不可能是全对了。当全对时,半对,当有错的时候,错误。

    /**
     *  根据多的进行建立记录的数组。
     */
    NSMutableArray *resultArray=[NSMutableArray arrayWithCapacity:userChoeseArray.count];
    for (int k=0; k<userChoeseArray.count; k++) {
        [resultArray addObject:[NSNumber  numberWithBool:NO]];
    }

    /**
     *  进行判断看是否有相等的,先全部是不等的,然后如果有相等的就记录一下。
     */
    for (int i=0; i<answerArray.count; i++ ) {
        NSString *answerString=answerArray[i];
        for (int j=0; j<userChoeseArray.count; j++) {
            NSString *userString=userChoeseArray[j];

            if ([answerString isEqualToString:userString]) {

                NSNumber *munber=resultArray[j];
                BOOL eqult=[munber boolValue];
                eqult=YES;
                resultArray[j]=[NSNumber numberWithBool:eqult];
            }
        }
    }
    /**
     *  看是否全部相等,如果相等那就是半对,但是只有有不相等的,就是错的。
     */
    BOOL   AllRYES=YES;
    for (NSNumber *eqults in resultArray) {
        BOOL equltBools=[eqults boolValue];
        if (equltBools==NO) {
            AllRYES=NO;
        }
        if (AllRYES) {
            result=1;
        }else{
            result=2;
        }
}

}

switch (result) {
    case 0:
    {
        NSLog(@"答案完全正确");
    }
        break;
    case 1:
    {
        NSLog(@"答案对了一部分");
    }
        break;

    default:{
        NSLog(@"答案完全不对");
    }
        break;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值