/**
* 判断用户的选择数组 用答案的数组来对比
*
* @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;
}
}