求助!分数计算错误,不知道原因
查看原帖
求助!分数计算错误,不知道原因
526826
extreme_point楼主2022/5/27 18:15
#include<iostream>
#include<cmath>
using namespace std;
char id[16],s[100][4],ans[100],ans2[100];
int ID(char id[],int len){
	int n=0;
	for(int i=1;i<=16;i++){
		if(id[i-1]=='1') n+=pow(2,16-i);
	}
	if(n<1||n>10000){
		return false;
	} 
	else{
		cout<<"ID: "<<n<<endl;
		return id[15]-'0'+1;
	}
}
void test_type(int Rtype,char k[]){//2.检查试卷类型是否正确。
	Rtype-=1;
	if(k[0]==k[1]){
		cout<<"Type Incorrect"<<endl;return;
	}
	int Stype=k[1]-'0';
	if(Stype==Rtype){
		cout<<"Type Correct"<<endl;return;
	}
	else{
		cout<<"Type Incorrect"<<endl;return;
	}
}
void st_ans(int n){//转化为字母 
	int g=0;//指针 
	for(int i=0;i<n;i++){//每题答案
		bool flag=0;
		for(int j=0;j<4;j++){//判断每题答案 
			if(flag==1){
				ans2[g]='E';
				break;
			}
			if(s[i][j]=='1'){
				ans2[g]=j+'A';
				g++;flag=1;
			}
		
		}
		if(flag==0){
			ans2[g]='E';
		}
	}
}
double test_ans(char Sans[100],char Tans[100],int len){
	double num=100.00/(len*1.0);
	double sum=0.0;
	for(int i=0;i<len;i++){
		if(Sans[i]==Tans[i]){
			sum+=num;
		}
	}
	return sum;
}
int main(){
	int tx,n;
	cin>>tx>>n;
	for(int i=0;i<n;i++){
		cin>>ans[i];
	}
	for(int t=0;t<tx;t++){
		bool f=0;
		//id
		for(int j=1;j<=16;j++){
			cin>>id[j-1];
		}
		int Id=ID(id,16);
		if(!Id){
			f=1;
			cout<<"Wrong ID"<<endl;
		}
		//type
		char kx[2];
		cin>>kx[0]>>kx[1];
		if(f==0)test_type(Id,kx);
		//判断结果 
		for(int j=0;j<n;j++){
			for(int k=0;k<4;k++){
				cin>>s[j][k];
			}
		}
		if(f==0)st_ans(n);
//		for(int j=0;j<n;j++){
//			cout<<ans2[j];
//		}
		
		//计算答案 
		if(f==0){
			double sum=test_ans(ans2,ans,n);
			printf("%.1f\n",sum);	
		}
	
	}
}

2022/5/27 18:15
加载中...