#include <stdio.h>
2020/6/2119:58:02
#include <stdio.h>
#define DATA_LIM 100
#define SENTINEL -1
/*
等差数列か判定する関数
引数は,判定する数列の入った配列の先頭アドレス
戻り値は,等差数列なら 1,そうでなければ, 0
*/
int isTousa(double *pSuuretsu) {
int kekka = 1;
/* ここに判定処理 */
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") ;
} else {
printf("NG\n") ;
} ;
return 0 ;
}
一つ前の質問の番兵版です。
こちらも教えてください。
回答
1〜2件/2件中
- 並び替え:回答日時の
- 新しい順
- |古い順
Hermitさん
2020/6/2122:33:28
適当になチェックしかしてないから、違ってたらごめんね。
#include <stdio.h>
#define DATA_LIM 100
#define SENTINEL -1
int isTousa(double *pSuuretsu)
{
if (pSuuretsu[0] == SENTINEL || pSuuretsu[1] == SENTINEL)
return 0;
{
const double d = pSuuretsu[1] - pSuuretsu[0]; // 公差
for (pSuuretsu += 2; pSuuretsu[0] != SENTINEL; pSuuretsu++) {
double tmp = pSuuretsu[-1] + d - pSuuretsu[0];
if ((tmp < 0.0 ? -tmp : tmp) >
(pSuuretsu[0] < 0.0 ?
pSuuretsu[0] * -0.000001 : pSuuretsu[0] * 0.000001))
return 0;
}
}
return 1;
}
int main(void)
{
double data[DATA_LIM] =
{ 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, SENTINEL };
int flag;
flag = isTousa(data);
if (flag) {
printf("Ok\n");
} else {
printf("NG\n");
}
return 0;
}
2020/6/2121:40:54
このカテゴリの回答受付中の質問
- 「モバイルC」というandroid/iOS用アプリを使っている方に質問なのですが、「モバ...
- C言語で、連立一次方程式のヤコビ法で 2x-y=1 -x+2y=1 これを変形して、漸化式で...
- C言語について void f(IntStack* s1, IntStack* s2) { int x; Pop(s1, &x);...
- 【lua言語】ミニワールド内の開発者ツールスクリプトについて ワールドにユーザー...
- UE4のブループリントのマクロは、C++に書き直すにあたってどのような記述になりま...
- VisualStudioで出力した時に文字の色が変わる方法を教えてください。
- C言語のスタックについて #include <stdio.h> #include<stdlib.h> #includ...
- visual studioでlibcurlを使いたいのですが、どうすればいいのでしょうか? 以上...
- C言語初心者です。 unsigned,int,float,doubleそれぞれのビットパターンを表示す...
- C言語 スタックについて ポップした値をprintf内で表示させたいです #include <...
この質問につけられたタグ
カテゴリQ&Aランキング
- 戻る
- 次へ
総合Q&Aランキング
Yahoo!知恵袋カテゴリ
お客様自身の責任と判断で、ご利用ください。