求助捉虫
  • 板块灌水区
  • 楼主rainygame
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/4/12 18:50
  • 上次更新2023/10/23 18:40:30
查看原帖
求助捉虫
804607
rainygame楼主2023/4/12 18:50
bool cmp2(string a, string b){
	if (a.size() == b.size()) return a > b;
	return a.size() > b.size();
}

bool cmp3(string a, string b){
	if (apos != bpos) return apos > bpos;
	for (int i=0; i<apos-1; i++){
		if (a[i] != b[i]) return a[i] > b[i];
	}
	for (int i=apos; i<a.size(); i++){
		if (a[i] != b[i]) return a[i] > b[i];
	}
	return false;
}

string bl(string &a, int pos){
	if (a.find('.') == -1) a += '.';
	for (int i=1; i<=pos; i++) a += '0';
}

bool cmp(string a, string b){
	apos = a.find('.');
	bpos = b.find('.');
	bool at = (apos != -1), bt = (bpos != -1);
	
	if (!at && !bt) return cmp2(a, b);
	int a_0 = a.size()-apos-1, b_0 = b.size()-bpos-1;
	if (at && !bt){
		bl(b, a_0);
		return cmp3(a, b);
	}
	if (!at && bt){
		bl(a, b_0);
		return cmp3(a, b); 
	}
	
	if (a_0 > b_0) bl(b, a_0-b_0);
	else if (a_0 < b_0) bl(a, b_0-a_0);
	return cmp3(a, b);
}

这个代码的 cmp 实现了一个判断两个 string 所表示的实数大小的作用(a>ba>b 返回 true,否则返回 false),但是有问题,求到底有什么问题?

2023/4/12 18:50
加载中...