[問題] 一題作業...

看板C_and_CPP (C/C++)作者 (我不想放棄妳啊)時間16年前 (2009/07/19 11:31), 編輯推噓3(309)
留言12則, 3人參與, 最新討論串1/1
題目是 輸入至多十筆捐贈值到double陣列 讀到非數字輸入時結束輸入 然後輸出平均值 以及陣列中有多少筆資料大於平均值 這該怎麼下手呢? loop //至多10筆 { 這裡該怎麼判斷是否為數字呢? cctype裡的isdigit()嗎? 還有該怎麼從迴圈裡跳出來呢? } 自已打的程式碼~@@ #include <iostream> #include <cctype> using namespace std; int main() { double num[10]; //double陣列 double average=0.0; //平均 double sum=0.0; //總和 int input=0; int count=0; for(int i=0;i<10;i++) { cin >> input; if(isdigit(input)) { num[i]=input; //存入陣列 count++; //計算輸入為數字的次數 } else break; //不為數字時跳出迴圈 } for(int j=0;j<10;j++) sum+=num[j]; //計算double陣列總和 average=sum/count; //算平均 count=0; for(int k=0;k<10;k++) { if(average>num[i]) //判斷double陣列裡面元素有幾個大於平均 count++; } } 這問題出在哪呢@@ 最近剛學C++@@~ 這是C++ Primer Plus 5e 的習題 沒解答又沒得問@@ 想好久 謝謝幫忙了~@@ -- 羅賓:那一瞬間感覺好像就要升天了。 〒△〒 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.99.94.37

07/19 12:44, , 1F
isdigit只能辨別0~9, 可能不符合你的需求
07/19 12:44, 1F

07/19 12:58, , 2F
寫C可以考慮用strtod; C++可用istringstream + eof
07/19 12:58, 2F

07/19 13:00, , 3F
讓程式可以判斷出 123 與 123abc(不合法的值)
07/19 13:00, 3F

07/19 13:02, , 4F
可參考17897 U大 與 17873 a大的文章
07/19 13:02, 4F

07/19 13:07, , 5F
scanf 與 cin + eof 並沒有辦法判斷出 123 與 123abc
07/19 13:07, 5F

07/19 13:08, , 6F
所以我只想到先以字串讀進來再轉換, 希望有更好的方法
07/19 13:08, 6F

07/19 13:18, , 7F
input為int, 若輸入型態不合cin>>input會失敗
07/19 13:18, 7F

07/19 13:26, , 8F
即可把cin>>input作為(迴圈或if)的判斷條件
07/19 13:26, 8F

07/19 13:39, , 9F
123 與 123abc 用 cin >> input 時,
07/19 13:39, 9F

07/19 13:39, , 10F
(cin >> input) 與 input 會有一樣的結果
07/19 13:39, 10F

07/19 20:39, , 11F
su3大的例子沒錯:混合輸入時只會"吸收"想要的~@@
07/19 20:39, 11F

07/20 09:02, , 12F
謝謝...我還反應不過來@@...我繼續研究...
07/20 09:02, 12F
文章代碼(AID): #1AOfDx1t (C_and_CPP)
文章代碼(AID): #1AOfDx1t (C_and_CPP)