帮个忙
查看原帖
帮个忙
222479
鱼鱼号铲屎车楼主2022/8/27 18:40

我今天的样例下载次数用完了有没有人能帮我下一下我这份代码那个样例错了谢谢

#include<bits/stdc++.h>
using namespace std;
map<string,int> Server;
map<string,int> Serverid;
map<int,string> Client;
map<int,string>Serverans;
map<int,string>Clientans;
int Sans,Cans,C;
struct IP{
	string a; 
	int ip1,ip2,ip3,ip4,ip5;
};
bool ipcheck(int c,int maxx){
	return (c <= maxx && c >= 0);
}
void safe_flush(FILE *fp){
	int ch;
	while( (ch = fgetc(fp)) != EOF && ch != '\n' );          
}
IP ip[1005];
int main(){
	int kkk;
	int n;
	cin >> n;
	for(int i = 0; i < n; i ++){
		cin >> ip[i].a;
		kkk = scanf("%d.%d.%d.%d:%d",&ip[i].ip1,&ip[i].ip2,&ip[i].ip3,&ip[i].ip4,&ip[i].ip5);
		safe_flush(stdin);
		string p = to_string(ip[i].ip1) + "." + to_string(ip[i].ip2) + "." + to_string(ip[i].ip3) + "." + to_string(ip[i].ip4) + ":" + to_string(ip[i].ip5);
		bool bl = (ipcheck(ip[i].ip1,255) && ipcheck(ip[i].ip2,255) && ipcheck(ip[i].ip3,255) && ipcheck(ip[i].ip4,255) && ipcheck(ip[i].ip5,65535)) && kkk == 5;
//		cout << "第" << i << "条ip正确性:" << bl << '\n'; 
		if(bl){
			//ip正确 
//			cout << "第" << i << "次输入循环进入ip正确if\n"; 
			if(ip[i].a == "Server" && Server[p] == 1){ //之前有过 
				Serverans[i] = "FAIL";//有相同的服务器IP所以无法成功 
			} else if(ip[i].a == "Server"){//之前没有 
				Server[p] = 1;//标记此服务器ip存在 
				Serverid[p] = i;//记录正确服务器ip的编号 
				Serverans[i] = "OK";//正确并成功建立连接 
			} else if(ip[i].a == "Client"){
				Client[i] = p;//标记此台客户电脑为此ip
//				cout << "ip" << p << "已被正确客户端记录Cans=" << Cans << "\n"; 
				Cans ++;
			}
		} else {//ip不对 
//			cout << "ip错误出错位置:";
			(ipcheck(ip[i].ip1,255) && ipcheck(ip[i].ip2,255) && ipcheck(ip[i].ip3,255) && ipcheck(ip[i].ip4,255) && ipcheck(ip[i].ip5,65535)) && kkk == 5;
//			if(!ipcheck(ip[i].ip1,255)) cout << "ip1\n";
//			if(!ipcheck(ip[i].ip2,255)) cout << "ip2\n";
//			if(!ipcheck(ip[i].ip3,255)) cout << "ip3\n";
//			if(!ipcheck(ip[i].ip4,255)) cout << "ip4\n";
//			if(!ipcheck(ip[i].ip5,255)) cout << "ip5\n";
//			if(kkk != 5) cout << "kkk,kkk=" << kkk << '\n';
			
			if(ip[i].a == "Server"){
				Serverans[i] = "ERR";//ip不合规范 
			} else if(ip[i].a == "Client"){
				Clientans[i] = "ERR";//ip不合规范
//				cout << "\n客户端ip:" << p << "不合规范已被标记!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1\n";
			}
		}
	}
//	cout << "--------------------------------------------------------------------\n客户端正确答案组0到10\n";
//	for(int i = 0; i < 10; i ++){
//		cout << "第" << i << "个答案为" << Clientans[i] << '\n';
//	}
//	cout << "---------------------------------------------------------------------\n输出完毕\n";
//	cout << "--------------------------------------------------------------------\n服务器答案组0到10\n";
//	for(int i = 0; i < 10; i ++){
//		cout << "第" << i << "个答案为" << Serverans[i] << '\n';
//	}
//	cout << "---------------------------------------------------------------------\n输出完毕\n";
	for(int i = 0; i < n; i ++){
//		cout << "在第" << i << "次客户端判定循环中Server[Client[i]]=" << Server[Client[i]] << "   Client[i] = " << Client[i] <<'\n'; 
		if(Server[Client[i]] == 1 && !Client[i].empty() && Serverid[Client[i]] < i){
			Clientans[i] = to_string(Serverid[Client[i]] + 1);//记录客户端可以链接的服务器编号 
		} else if(!Client[i].empty()){
			Clientans[i] = "FAIL";//没有可以对应的服务器标记失败链接 
		}
	} 
	int aa = 0,bb = 0;
	for(int i = 0; i < n; i ++){
		if(!Serverans[i].empty()){
			cout << Serverans[i] << '\n';
//			cout << "第" << i << "次输出进入服务器答案\n";
 		} else {
			cout << Clientans[i] << '\n';
//			cout << "第" << i << "次输出进入客户端答案\n";
		}
	}
//	cout << "--------------------------------------------------------------------\n客户端答案组0到10\n";
//	for(int i = 0; i < 11; i ++){
//		cout << "第" << i << "个答案为" << Clientans[i] << '\n';
//	}
//	cout << "---------------------------------------------------------------------\n输出完毕\n";
//	cout << "--------------------------------------------------------------------\n服务器答案组0到10\n";
//	for(int i = 0; i < 10; i ++){
//		cout << "第" << i << "个答案为" << Serverans[i] << '\n';
//	}
//	cout << "---------------------------------------------------------------------\n输出完毕\n";
	return 0;
}
2022/8/27 18:40
加载中...