こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

c言語

int kexnsakusuu(int n[30], int c[30],int g){
int y = 0;
int h = 0;
int flag = 0;
int flag_1;
int i=1;
int u;
while(c[i]>0){
h++;
u = 0;
flag_1=0;
while(n[u]>0 && flag_1==0){
if(abs(n[u] - c[i]) <= g){y++;flag_1++;};
u++;
}
i++;
}
if(y == h)flag = 1;
return flag;
}
n[30]に12 18 3 3 0 0 0 0 以下0
c[30]に3000 12 3 0 0 0 0 以下0
c[1] c[2]とn[]の絶対値が2以下(gは2)で調べたいのですが、上記だとf‘lagは1を返したいです。
9000件のn[]を調べると誤動作があるみたいです。

投稿日時 - 2018-09-11 05:07:24

QNo.9536086

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ざっとしか、見てないんですが。
>9000件のn[]を調べると誤動作があるみたいです。
n[]が30個しか配列がないので、最大でも30でBreak
かけたほうがいいですよね。
9000など可変長に受け取りたいなら、*nで受け取ったほうが
まだましです。
ただ、ざっと見た感じなので、まだ何がしたいのかまでは
読み取れてませんが。
とりあえず、
iとuが30(を含む)以上になったら、停止したほうがいいですよ。
i++;の後に
if (i>30) break;
など

投稿日時 - 2018-09-11 08:51:55

あなたにオススメの質問