2010年7月7日水曜日

nの階乗を求めるプログラム:桁あふれ検出付き

学校の課題でおなじみのnの階乗を求めるプログラムです。今回は豪華に桁あふれ検出付きです。


#include<stdio.h>

#define ERROR 1
#define NO_ERROR 0


int main(void){

/*入力とカウンター用変数*/
int iCnt;
int iN;

/*エラー保持フラグ*/
int iError = NO_ERROR;


/*今回の値と前回の値の保持用変数*/
unsigned long long int ulliFacts= 1;
unsigned long long int ulliPrevs= 0;


/*求める階乗のnを入力*/
printf("n=");
scanf("%d", &iN);

/*階乗の計算を行う*/
for(iCnt = 1; iCnt <= iN; ++iCnt){
   
    ulliFacts *= iCnt;
   
    /*前回の結果より小さくなった場合は桁あふれと判断し処理を終了*/
    if(ulliFacts < ulliPrevs){

        iError = ERROR;
        break;
    }
    else{
       
        ulliPrevs = ulliFacts;
       
    }
   
}


/*表示をする*/
switch(iError){
   
    case NO_ERROR:
        printf("%d!=%llu\n", iN, ulliFacts);
    break;
   
    case ERROR:
        printf("計算出来る最大値を超えました");
    break;
   
    default:
        printf("Fatal Error!");
    break;

}


return 0;
}
書かれている記事
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1043346545

0 件のコメント:

コメントを投稿