###実現したいこと
main関数内で数字を2つ読み込んでaの数字がbに含まれているかを調べる関数int inclusion
で悩んでいます。
一致しているか確認するためにそれぞれの桁数を確認しなくてはならないと思います。
そこで確認するコードを入れたのですが出力してみると桁数が一つ少なくなってしまいます。
例えば以下のようになります。どうしてこのようになるのか教えてください。
a,b2つの正整数を入力してください. 12 21 ai=1 bi=1 anum[0]=2 bnum[0]=1 anum[0]=2 bnum[0]=1 anum[1]=1 bnum[1]=2 anum[1]=1 bnum[1]=2 bはaを含む.
###コード
C
1//bがaを含むときは1,そうでないときは0を返す関数 2int inclusion(int a,int b) 3{ 4 int i,j,anum[10],bnum[10]; 5 int ai=0,bi=0,samenum=0,yes=0; 6 7 //a,bを各桁ごとに分解 8 for(i=0;i<10;i++){ 9 anum[i]=a%10; 10 a=a/10; 11 if(a!=0){ 12 ai++; 13 } 14 bi=1; 15 bnum[i]=b%10; 16 b=b/10; 17 if(b!=0){ 18 bi++; 19 } 20 } 21 22 //一致確認 23 printf("ai=%d bi=%d ",ai,bi); 24 for(i=0;i<ai;i++){ 25 for(j=0;j<bi;j++){ 26 printf("anum[%d]=%d ",i,anum[i]); 27 printf("bnum[%d]=%d ",i,bnum[i]); 28 if(anum[i]==bnum[j]){ 29 samenum++; 30 } 31 } 32 } 33 34 if(samenum==ai){ //含む 35 yes=1; 36 }else{ 37 yes=0; 38 } 39 return yes; 40}
回答4件
あなたの回答
tips
プレビュー