作者ggLer (我不想放棄妳啊)
看板C_and_CPP
標題[問題] 一題作業...
時間Sun Jul 19 11:31:03 2009
題目是
輸入至多十筆捐贈值到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
1F:推 su31o4gj83:isdigit只能辨別0~9, 可能不符合你的需求 07/19 12:44
2F:→ su31o4gj83:寫C可以考慮用strtod; C++可用istringstream + eof 07/19 12:58
3F:→ su31o4gj83:讓程式可以判斷出 123 與 123abc(不合法的值) 07/19 13:00
4F:→ su31o4gj83:可參考17897 U大 與 17873 a大的文章 07/19 13:02
5F:→ su31o4gj83:scanf 與 cin + eof 並沒有辦法判斷出 123 與 123abc 07/19 13:07
6F:→ su31o4gj83:所以我只想到先以字串讀進來再轉換, 希望有更好的方法 07/19 13:08
7F:推 lantolerance:input為int, 若輸入型態不合cin>>input會失敗 07/19 13:18
8F:→ lantolerance:即可把cin>>input作為(迴圈或if)的判斷條件 07/19 13:26
9F:推 su31o4gj83:123 與 123abc 用 cin >> input 時, 07/19 13:39
10F:→ su31o4gj83:(cin >> input) 與 input 會有一樣的結果 07/19 13:39
11F:→ lantolerance:su3大的例子沒錯:混合輸入時只會"吸收"想要的~@@ 07/19 20:39
12F:→ ggLer:謝謝...我還反應不過來@@...我繼續研究... 07/20 09:02