POJ第1218题总是报"Compile Error"错误

urakvv7 2010-01-05 03:36:14
链接地址:http://acm.pku.edu.cn/JudgeOnline/problem?id=1218
代码如下:
// THE DRUNK JAILER
// ÌâÄ¿Ë㷨ʵ¼ÊÉÏÊÇÇónÒÔÄÚµÄÍêȫƽ·½ÊýµÄ¸öÊý
// ÒòΪֻÓÐÍêȫƽ·½ÊýÓÐÆæÊý¸öÒò×Ó
#include <iostream>
#include <cmath>
using namespace std;

int main() {

int lines, n;
cin >> lines;

while (lines--) {
cin >> n;
cout << int(sqrt(n)) << endl;
}

system("PAUSE");
return 0;
}

我在自己的Dev-C++ 4.9.9.2环境中可以正确编译、运行,但提交到POJ总是报"Compile Error"错误。
望指点,谢!
...全文
398 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
dskit 2010-01-05
  • 打赏
  • 举报
回复
Main.cpp
Main.cpp(12) : error C2668: 'sqrt' : ambiguous call to overloaded function
math.h(581): could be 'long double sqrt(long double)'
math.h(533): or 'float sqrt(float)'
math.h(128): or 'double sqrt(double)'
while trying to match the argument list '(int)'

poj可以看错误提示的

#include <iostream>
#include <cmath>
using namespace std;

int main() {

int lines, n;
cin >> lines;

while (lines--) {
cin >> n;
cout << int(sqrt((double)n)) << endl;
}

return 0;
}
urakvv7 2010-01-05
  • 打赏
  • 举报
回复
不过这编译的错误确实解决了。谢!
咦?
cout < < int(sqrt(n)) < < endl;

中的sqrt(n)不进行类型的隐式转化?
⊙﹏⊙b汗
[Quote=引用 15 楼 sammylan 的回复:]
6307417 442091289 2350 Wrong Answer  C 359B 2010-01-05 16:01:55
6307416 quk_1999 1298 Wrong Answer  C++ 442B 2010-01-05 16:01:55
6307415 442091289 2350 Wrong Answer  C++ 359B 2010-01-05 16:01:44
6307414 smallworld 3752 Presentation Error  C++  2010-01-05 16:01:31
6307413 xcc0322 2823 Runtime Error  C++ 689B 2010-01-05 16:01:31
6307412 holy0521 1471 Wrong Answer  C 1688B 2010-01-05 16:01:17
6307411 SammyLan 1218 Accepted 280K 16MS C++ 276B 2010-01-05 16:00:45

[/Quote]
pmars 2010-01-05
  • 打赏
  • 举报
回复
#include <iostream>
#include <cmath>
using namespace std;

int main() {

int lines, n;
cin >> lines;

while (lines--) {
cin >> n;
cout << int(sqrt((double)n)) << endl;
}

return 0;
}


ac 了!
SammyLan 2010-01-05
  • 打赏
  • 举报
回复
cout<<int(sqrt((double)n))<< endl;
sqrt有double,long double,float三个版本的
你传一个int进去
肯定会出现重载决策失败拉
urakvv7 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sammylan 的回复:]
你的代码在本机编译都编译不通过的...
真汗了
[/Quote]
怎么可能?编译、运行都是被我亲眼所见。你用的是什么环境?
SammyLan 2010-01-05
  • 打赏
  • 举报
回复
6307417 442091289 2350 Wrong Answer C 359B 2010-01-05 16:01:55
6307416 quk_1999 1298 Wrong Answer C++ 442B 2010-01-05 16:01:55
6307415 442091289 2350 Wrong Answer C++ 359B 2010-01-05 16:01:44
6307414 smallworld 3752 Presentation Error C++ 2010-01-05 16:01:31
6307413 xcc0322 2823 Runtime Error C++ 689B 2010-01-05 16:01:31
6307412 holy0521 1471 Wrong Answer C 1688B 2010-01-05 16:01:17
6307411 SammyLan 1218 Accepted 280K 16MS C++ 276B 2010-01-05 16:00:45
SammyLan 2010-01-05
  • 打赏
  • 举报
回复
cout<<int(sqrt((double)n))<< endl; 
SammyLan 2010-01-05
  • 打赏
  • 举报
回复
你的代码在本机编译都编译不通过的...
真汗了
urakvv7 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 thefirstz 的回复:]
你的文件名需要是以.cpp结尾的,是不是弄成.c结尾了
[/Quote]
考虑得很细,不过在POJ上提交时是不需要源代码文件的,只需要把代码拷贝进去。
昵称很不好取 2010-01-05
  • 打赏
  • 举报
回复
你的文件名需要是以.cpp结尾的,是不是弄成.c结尾了
kouwenlong 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhoupo 的回复:]
引用 8 楼 kouwenlong 的回复:
#include <iostream.h>
#include <cmath.h>

Sure?
[/Quote]
试试吧,我也不确定。
urakvv7 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 kouwenlong 的回复:]
#include <iostream.h>
#include <cmath.h>
[/Quote]
Sure?
kouwenlong 2010-01-05
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <cmath.h>
urakvv7 2010-01-05
  • 打赏
  • 举报
回复
Compile Error...
[Quote=引用 5 楼 tanmeining 的回复:]
C/C++ code
cout<<int(sqrt(n))<< endl; 改成
cout<< (int)(sqrt(n))<< endl;
[/Quote]
urakvv7 2010-01-05
  • 打赏
  • 举报
回复
Compile Error...
[Quote=引用 2 楼 thefirstz 的回复:]
试试下面代码
C/C++ code#include<iostream>
#include<cmath>usingnamespace std;int main() {int lines, n;
cin>> lines;while (lines--) {
cin>> n;
cout<< (int)(sqrt(n))<< endl;
}

getchar();return0;
}
[/Quote]
tanmeining 2010-01-05
  • 打赏
  • 举报
回复

cout < < int(sqrt(n)) < < endl; 改成
cout << (int)(sqrt(n)) << endl;
tanmeining 2010-01-05
  • 打赏
  • 举报
回复
cout < < int(sqrt(n)) < < endl;
urakvv7 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sammylan 的回复:]
将system函数去掉
在不行就将注释去掉
不要有中文注释
[/Quote]
之前用system函数都没遇到过错误,去掉中文注释还会是Compile Error。
昵称很不好取 2010-01-05
  • 打赏
  • 举报
回复
试试下面代码
#include <iostream> 
#include <cmath>
using namespace std;

int main() {

int lines, n;
cin >> lines;

while (lines--) {
cin >> n;
cout << (int)(sqrt(n)) << endl;
}

getchar();
return 0;
}
SammyLan 2010-01-05
  • 打赏
  • 举报
回复
将system函数去掉
在不行就将注释去掉
不要有中文注释

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧