#15428: C++的 math.h 不能用??


Lightning147 (erik)

學校 : 臺北市立建國高級中學
編號 : 83251
來源 : [218.161.41.70]
最後登入時間 :
2024-04-24 19:18:41
d579. 兩條線 -- raincole | From: [61.228.177.185] | 發表日期 : 2018-10-05 21:22

程式碼如下:

#include<iostream>
#include<math.h>
using namespace std;
int main(void)
{
double n;
while(cin>>n)
{
cout << "|" << n << "|=" << abs(n) << endl;
}
}

 

我用dev c++編譯能過,自己run程式測也沒問題,但送出解答卻CE (編譯錯誤) ...

有人知道我程式哪裡錯了嗎?

感謝~

 
#15429: Re:C++的 math.h 不能用??


Lightning147 (erik)

學校 : 臺北市立建國高級中學
編號 : 83251
來源 : [218.161.41.70]
最後登入時間 :
2024-04-24 19:18:41
d579. 兩條線 -- raincole | From: [61.228.177.185] | 發表日期 : 2018-10-05 21:27

程式碼如下:

#include
#include
using namespace std;
int main(void)
{
double n;
while(cin>>n)
{
cout << "|" << n << "|=" << abs(n) << endl;
}
}

 

我用dev c++編譯能過,自己run程式測也沒問題,但送出解答卻CE (編譯錯誤) ...

有人知道我程式哪裡錯了嗎?

感謝~


程式碼修改後如下:

#include<iostream>

#include<math.h>

#include<iomanip> 

using namespace std;

int main(void)

{

double n;

while(cin>>n)

{

cout << fixed << setprecision << "|" << n << "|=" << abs(n) << endl;

}

}

 

但還是CE...

 
#15431: Re:C++的 math.h 不能用??


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)

學校 : 臺北市私立延平高級中學
編號 : 83268
來源 : [203.72.178.1]
最後登入時間 :
2023-10-30 13:02:50
d579. 兩條線 -- raincole | From: [114.42.208.118] | 發表日期 : 2018-10-05 21:39

程式碼如下:

#include
#include
using namespace std;
int main(void)
{
double n;
while(cin>>n)
{
cout << "|" << n << "|=" << abs(n) << endl;
}
}

 

我用dev c++編譯能過,自己run程式測也沒問題,但送出解答卻CE (編譯錯誤) ...

有人知道我程式哪裡錯了嗎?

感謝~


程式碼修改後如下:

#include

#include

#include 

using namespace std;

int main(void)

{

double n;

while(cin>>n)

{

cout << fixed << setprecision << "|" << n << "|=" << abs(n) << endl;

}

}

 

但還是CE...

試試看cmath,不然就有編錯。


 
#15433: Re:C++的 math.h 不能用??


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
d579. 兩條線 -- raincole | From: [106.105.27.148] | 發表日期 : 2018-10-05 21:57

這邊簡單解釋一下~

<math.h>是對應到C的標頭檔(不過C++也能使用),
但C語言是不支援函式多載的,
這意味在C語言底下對於不同型態的函式的名稱是不同的,
在標準的<math.h>中對應到double型態的函式為 fabs() ,
故將上面程式碼中的 abs() 改為 fabs() 即可。

另一種選擇則是使用<cmath>的標頭檔,
<cmath>則是應到C++的標頭檔(C就無法使用),
C++是支援函式多載的,
這意味在C++底下對於不同型態的函式的名稱是可以相同的,
故在<cmath>中使用 abs() 就行了,
所以也可以將標頭檔換成 <cmath> 即可。

至於在DevC++中能編譯的原因嘛....
我猜是DevC++在編譯時自動幫忙強制轉型態了... ?

另外提醒一下, setprecision 要記得給參數 setprecision(4) 這樣~~~  OwO

 
ZeroJudge Forum