求兩點間距離

Problem Description
輸入兩點座標(X1,Y1),(X2,Y2),計算並輸出兩點間的距離。
Input
輸入數據有多組,每組佔一行,由4個實數組成,分別表示x1,y1,x2,y2,數據之間用空格隔開。
Output
對於每組輸入數據,輸出一行,結果保留兩位小數。
Sample Input
0 0 0 1
0 1 1 0
Sample Output
1.00
1.41

#include <iostream>
#include <iomanip>
#include "math.h"
using namespace std;

double computedis(double x1,double y1,double x2,double y2); 
int main()
{
    double a1,b1,a2,b2;
    while(cin.peek()!=EOF)
    {       
            cin>>a1>>b1>>a2>>b2;

            cout <<setprecision(2) <<std::fixed <<computedis(a1,b1,a2,b2)<<endl;
 //起初沒有添加下面這個循環,把代碼上傳在線編譯一直報錯,後發現原因是當得到正確的輸出結果後,還會輸出一次正確結果,也就是說cin.peek()沒有馬上檢測到EOF的存在,而是檢測到了b2後面的回車符,因而再次回到循環,又輸出一次結果,因而在輸出一次正確結果後應該先檢測後面是否還存在回車,如果存在則先跳過,這樣才能在後面檢測到EOF退出循環。               
            while(cin.peek()=='\n')   
            {
                cin.get();
            }
    }
    return 1;
}
double computedis(double x1,double y1,double x2,double y2)
{
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}

cin可以跳過使得輸入結束的結束符(Enter,space,Tab),但是隻是跳過緩衝區中已經經過的地方的符號,對於後面的則需要另外實現跳過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章