#include #define DATA_LIM 100 #define SENTINEL -1 /*  等差数列か判定する関数  引数は,判定する数列の入った配列の先頭アドレス  戻り値は,等差数列なら 1,そうでなければ, 0 */ int isTousa(double *pSuuretsu) { int kekka = 1; /* ここから */ int p0 = *pSuuretsu; pSuuretsu++; int p1 = *pSuuretsu; pSuuretsu++; int t = p1 - p0; while (*pSuuretsu != SENTINEL) { if (*pSuuretsu - p1 != t) { kekka = 0; break; } t = *pSuuretsu - p1; p1 = *pSuuretsu; pSuuretsu++; } /* ここまで */ 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, SENTINEL}; int flag; /* 1 であれば等差数列 */ flag = isTousa(data); /* 出力 */ if (flag) { printf("OK\n"); // 等差数列であればOKと出力 } else { printf("NG\n"); // 等差数列でなければNGと出力 } return 0; }