2016-02-26 228 views
-2

我的老師給我這個和我加入爲什麼setprecision會出錯?什麼是setprecision

«setprecision(3) <<setiosflags(ios::fixed) » 

你能告訴我爲什麼當一個錯誤?

#include<iostream> 
#include<math.h> 
#include<iomanip> 
using namespace std; 
main() 
{ 
    float x1,y1,x2,y2,x3,y3,x4,y4,PQ,QR,RS,SP,Keliling; 
    cout << "Masukkan koordinat empat titik berbeda (x,y) :\n"; 
    cout<< "P(x,y):" ; 
    cin >> x1>>y1 ; 
    cout <<"\n" ; 
    cout << "Q(x,y) :" ; 
    cin >> x2>>y2 ; 
    cout <<"\n" ; 
    cout << "R(x,y) :" ; 
    cin>> x3>>y3 ; 
    cout <<"\n" ; 
    cout << "S(x,y) :" ; 
    cin >>x4>>y4; 
    cout <<"\n" ; 

    PQ = sqrt(pow(x2-x1,2)+pow(y2-y1,2)); 
    QR = sqrt(pow(x3-x2,2)+pow(y3-y2,2)); 
    RS = sqrt(pow(x4-x3,2)+pow(y4-y3,2)); 
    SP = sqrt(pow(x1-x4,2)+pow(y1-y4,2)); 

    Keliling = PQ+QR+RS+SP; 
    cout << "Kelilingnya adalah " << Keliling <<" satuan"; 
    «setprecision(3) <<setiosflags(ios::fixed) » 
    return 0 ; 
} 
+1

你的老師給你的那個,用引號包圍了代碼。你不熟悉引號嗎? – molbdnilo

回答

3

sestprecision是,你可以進入cout流操縱定義多少位應顯示逗號後,因此,例如:

cout << setprecision(2) << 0.122312 << endl; 

0.12 

導致它導致錯誤,因爲你沒有把它放入流,但無處 - 這不是一個聲明!

+0

那麼setiosflags(ios :: fixed)的含義是什麼?感謝 –

+1

,它允許你添加一些格式標誌(比如大寫) - [看看這個參考](http://www.cplusplus.com/reference/iomanip/setiosflags/) - 我很確定你會發現更有趣的信息 –

4

因爲您誤解了說明。你不能在程序結束時將它轉儲到自己的代碼行,並期望它能夠神奇地工作,並且你不能在其上保留法文引號。

你需要從邏輯上思考你的程序在做什麼,以什麼順序。你想完成什麼,以及如何告訴計算機如何幫助你完成它?

一個好的開始將谷歌setprecision找出它是什麼以及如何使用它。

此外,您的程序還有其他問題,例如main缺少返回類型。

+0

IIRC如果返回類型是'int',則可以省略。與'int'參數類型相同。所以'foo(a,b){return a + b; ''是有效的。 編輯:從函數的'int'遺漏似乎很好,但省略參數類型不是猶太教。 – erip

+0

@erip:不,它不能。 C++不是C. –

+0

http://ideone.com/rdaJan – erip

1

與行的問題是,它不是一個有效的CPP聲明

的setprecision聲明需要連接到輸出流,因爲你正在使用的標準輸出。修正將是這樣的

cout << setprecision(2) << fixed << endl; 

再次就像preferencebean說,你的主要功能應包括返回類型。

int main() 
{ 
    //code; 
}