Re: [問題] 標準差的程式碼

作者: iamnotgm (伽藍之黑)   2014-06-01 23:22:16
※ 引述《williams7442 ()》之銘言:
: p=(char *)strtok(str," ");
: if(p!=NULL)
: arr[0]=atoi(p); /*atoi(p)將字串常數轉為整數*/
: //arr[0]=atoi(p) 例如輸入:5 4 3 9 只讀到5?
Yes
: i=1;
: while(p!=NULL){
: p=(char *)strtok(NULL," "); //分別讀取 4 3 9
: if(p!=NULL){
: arr[i]=atoi(p); //arr[1]=4 arr[2]=3 arr[4]=9 是這個意思?
Yes
: i++;
: }
: }
: num=i; //i=4,輸入4個數字
: min=32767;
: max=0;
: //怎麼不設成min=0;max=32767;
: tem=0;
: for(i=0;i<num;i++){
: if(arr[i]>max)
: max=arr[i];
: if(arr[i]<min)
: min=arr[i];
: tem+=arr[i];
: } //for到 }這有點一頭霧水,這是甚麼意思?
這一段是在取arr中的最大值與最小值
只要找到比min小的就更新min
max同理
所以你一開始把min設成0請問你要找誰跟他比小...
: 這個程式輸入 1 46325
: 46325大概在超出一點點會讓標準差的平方(方差) 超過5XXXX-XXXX約9位數字
: int不是至少2147483647嗎? 10位數字
int最大就是2147483647, 也就是2的32次方減1
32767是2的16次方減1
再上去的數字這支程式都會爆炸
因為arr[i]*arr[i]這項會大過2147483647
想用就請改型態

Links booklink

Contact Us: admin [ a t ] ucptt.com