教えてください

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
仲井間夢来

教えてください

#1

投稿記事 by 仲井間夢来 » 6年前

まず、ソースコードを見てください。初心者です。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define A 1
#define B 6
#define C 7
#define D 6
#define E 6

int main( void )
{
int an[A];
int a;
int kn;
int bn;
int b;
int cn[C];
int c;
int dn[D];
int d;
int en[E];
int e;
int m;
int sa;
int ea;
int ua;
int i;
int j;
int temp;
int x;
int y;
int sb;
int eb;
int ub;
int p;
int sc;
int ec;
int uc;
int s;
int sd;
int ed;
int ud;
int t;
int se;
int ee;
int ue;

a = 0;
printf( "an入力" );
do{ scanf( "%d", &kn );
if( kn ){
an[a++] = kn;}
}while( kn > 0 );
b = 0;
printf( "bn入力" );
do{ scanf( "%d", &kn );
if( kn ){
bn[b++] = kn;}
}while( kn > 0 );
c = 0;
printf( "cn_入力" );
do{scanf( "%d", &kn );
if( kn ){
cn[c++] = kn;}
}while( kn > 0 );
d = 0;
printf( "dn入力" );
do{ scanf( "%d", &kn );
if( kn ){
dn[d++] = kn;}
}while( kn > 0 );
e = 0;
printf( "en入力" );
do{ scanf( "%d", &kn );
if( kn ){
en[e++] = kn;
}
}while( kn > 0 );

sa = 0;
ea = 0;
ua = 0;
for(m=0; m<1; m++)
{ sa += an[m];
if((an[m] % 2 ) == 0 )
++ea;
if(an[m]<= 15)
++ua;}
while(1)
{
srand(time(NULL));
for( j = 0; j < 100; j++ )
{ x = rand() % B;
y = rand() % B;
temp = bn[x];
bn[x] = bn[y];
bn[y] = temp;}

ub = 0;
sb = 0;
eb = 0;
for( j =0; j < 1; j++ )
{ sb += bn[j];
if((bn[j] % 2 ) == 0 )
++eb;
if(bn[j] <= 15 )
++ub; }

for( p = 0; p < 100; p++ )
{ x = rand() % C;
y = rand() % C;
temp = cn[x];
cn[x] = cn[y];
cn[y] = temp;}

uc = 0;
sc = 0;
ec = 0;
for( p = 0; p < 1; p++ )
{ sc += cn[p];
if((cn[p] % 2 ) == 0 )
++ec;
if(cn[p] <= 15)
++uc;}

for( s = 0; s < 100; s++ )
{ x = rand() % D;
y = rand() % D;
temp = dn[x];
dn[x] = dn[y];
dn[y] = temp;}
ud = 0;
sd = 0;
ed = 0;
for( s = 0; s < 1; s++ )
{ sd += dn;
if((dn % 2 ) == 0 )
++ed;
if(dn <= 15)
++ud;}

for( t = 0; t < 100; t++ )
{ x = rand() % E;
y = rand() % E;
temp = en[x];
en[x] =en[y];
en[y] = temp;}
ue = 0;
se = 0;
ee = 0;
for( t = 0; t < 1; t++ )
{ se += en[t];
if((en[t] % 2 ) == 0 )
++ee;
if(en[t] <= 15)
++ue;


}
if(((75 <=(sa+sb+sc+sd+se) && (sa+sb+sc+sd+se) <=100) && ((ea+eb+ec+ed+ee)== 2) || ((ea+eb+ec+ed+ee) == 3) && ((ua+ub+uc+ud+ue)== 2) || ((ua+ub+uc+ud+ue)== 3)));

{
for(m=0; m<1; m++)
printf("%2d\t", an[m]);

for(j=0; j<1; j++)

printf("%2d\t", bn[j]);

for(p=0; p<1; p++)

printf("%2d\t", cn[p]);

for(s=0; s<1; s++)

printf("%2d\t", dn);

for(t=0; t<1; t++)

printf("%2d\t",en[t]);

printf("\n");
printf("sの合計は%d\n",sa+sb+sc+sd+se);
printf("eの合計は%d\n",ea+eb+ec+ed+ee);
printf("uの合計は%d\n",ua+ub+uc+ud+ue);
break;
}
}
return 0;
}
このようなコードを書いて実行しんんですが結果は以下のようになりました。
an入力1 0
bn入力5 3 16 28 4 9 0
cn_入力14 3 15 29 21 31 27 0
dn入力7 10 22 23 30 24 0
en入力12 8 18 25 19 20 0
1 4 3 7 19
sの合計は34
eの合計は1
uの合計は4
コンパイルした時点で、Warning W8019も出ます。調べてみると、意味を持たないコードとみたいです。ループの脱出条件もクリアされていません。
数値を入力して、snanf関数で拾い上げてrand関数でランダムにして、上記のような
組み合わせが見つかるとprintf関数で出力うしループを抜ける。この様な想定でしたが・・・
どこに原因がありどう書き換えればいいのかご指南ください

アバター
みけCAT
記事: 6351
登録日時: 10年前
住所: 千葉県
連絡を取る:

Re: 教えてください

#2

投稿記事 by みけCAT » 6年前

コードはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切にインデントをしていただけると、見やすくて助かります。

やりたいことがよくわからないですが、確かに無駄そうなif文がありますね。
一番長いif文の後ろについているセミコロンが蛇足ではないですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

初級者
記事: 200
登録日時: 10年前

Re: 教えてください

#3

投稿記事 by 初級者 » 6年前

例示の入力に対して、
どのような出力結果を
得ることを想定されて
いるのでしょうか。

仲井間夢来

お礼

#4

投稿記事 by 仲井間夢来 » 6年前

ありがとうございました。遅くまでバグを探していましたが見つけきれませんでした。単純なミスでした。c言語初めて未だ4か月です今回のものを次独自の関数バージョンにして見ようと
思っています。また掲示版でお世話になるかもしれませんその時は宜しくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る