前提・実現したいこと
ここに質問の内容を詳しく書いてください。
C言語で等差数列か判定するプログラムを組みました、これをSentinelを用いて書き直したいのですが、Sentinelというものがよくわかりません。
該当のソースコード
ソースコード #include <stdio.h> #define DATA_LIM 8 /* 戻り値は,等差数列なら 1,そうでなければ, 0 */ int isTousa(double *pSuuretsu, int n) { int kekka = 1; int i; /* ここに判定処理 */ for (i = 0 ; i < (n - 2) ; i++) { if ( (*(pSuuretsu + i) - *(pSuuretsu + i + 1 )) != (*(pSuuretsu + i + 1) - *(pSuuretsu + i + 2)) ) { kekka = 0; break; } } return kekka; } int main(void) { /* データを保存する配列 */ double data[DATA_LIM] = { 1.0, 3.0, 5.0, 7.0, 9.0, 11.5, 13.0, 15.0} ; int flag ; /* 1 であれば等差数列 */ flag = isTousa(data, DATA_LIM); /* 出力 */ if (flag) { printf("Ok\n") ; } else { printf("NG\n") ; } ; return 0 ; }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
通常、等差数列(数列全般)は整数だと思いましたが。doubleにしてあるのはなぜでしょう?
浮動少数は正確な数値は表せません。
回答1件
あなたの回答
tips
プレビュー