PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 程式出現了預期之外的輸出
作者:
jack41402
(抹茶好喝)
2020-03-12 20:40:40
問題(Question):
用cin.eof()時遇到錯誤,輸入時遇到EOF應該終止程式而不繼續運行,但程式卻多輸出一次,想知道為什麼會有錯誤?
餵入的資料(Input):
0 0 5 10 0 8
0 0 5 10 10 5
預期的正確結果(Expected Output):
Quick in
Nearly
錯誤結果(Wrong Output):
Quick in
Nearly
Nearly
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
double x1 , x2 , y1 , y2 , r1 , r2 , temp ;
while (!cin.eof())
{
cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2 ;
temp = sqrt (pow (x1 - x2 , 2) + pow (y1 - y2 , 2));
if ((r1 + r2)>=temp)
{
cout << "Quick in" << endl ;
}
else if ((r1 + r2) < temp)
{
cout << "Nearly" << endl ;
}
}
}
http://codepad.org/tnRLqQJK
補充說明(Supplement):
這個程式是在寫下面這題
https://toj.tfcis.org/oj/pro/19/
作者:
Schottky
(順風相送)
2020-03-12 21:03:00
你確定最後多出來那一輪的 cin 有收到資料嗎?
作者:
Lipraxde
(Lipraxde)
2020-03-12 21:04:00
我記得這個 eof() 是在讀到 EOF 後才會返回 true,是用來判斷上次讀取的狀態用的把那個長長的 com >> ... 當成 while 的 condition 應該就夠了進迴圈後就是 >> r2 的那次
http://www.cplusplus.com/reference/ios/ios/eof/
你看文件好了 "Return Value",我中文沒有表達的很清楚QQ
作者:
LPH66
(-6.2598534e+18f)
2020-03-13 00:24:00
重點在於 cin.fail() 等判斷方式都是「上一次是否錯誤」並沒有「等一下還有沒有東西」這回事--要知道等一下有沒有東西就真的要等一下看了之後才知道這一點就連大家說的 while(cin >> ...) 這個判斷也不例外只不過這是在讀完後馬上判斷它有沒有失敗而已
繼續閱讀
[問題]請問OUTP32和INP32這兩個function的作用
hbzncu
[問題] 讀取用數字隔開的逗號
yahoo168
[問題] 關於空間座標轉換
asdfg1597860
[討論] 學習C的軟體(完全沒有程式底的)
firedash
[問題] 關於C的unit test
d630200x
[問題] c++ win32 api元件背景顏色
newslime
[公告] twin1949tw水桶
wtchen
[問題] 關於函式指標的參數型態問題
d630200x
[閒聊] 板上的鄉民對於問題的容忍度大概在哪?
twin1949tw
[問題] C的指標和陣列
mistel
Links
booklink
Contact Us: admin [ a t ] ucptt.com