- 締切済み
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[]を調べると誤動作があるみたいです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- AsarKingChang
- ベストアンサー率46% (3467/7474)
回答No.1
ざっとしか、見てないんですが。 >9000件のn[]を調べると誤動作があるみたいです。 n[]が30個しか配列がないので、最大でも30でBreak かけたほうがいいですよね。 9000など可変長に受け取りたいなら、*nで受け取ったほうが まだましです。 ただ、ざっと見た感じなので、まだ何がしたいのかまでは 読み取れてませんが。 とりあえず、 iとuが30(を含む)以上になったら、停止したほうがいいですよ。 i++;の後に if (i>30) break; など