ここから本文です

C++ の質問です

evp********さん

2013/9/2515:19:30

C++ の質問です

array aの中身とbの中身に同じ数字が入っていればtrue を、ちがければfalse を返したいのですが、

int a[] = {1, 4, 9, 16, 9, 7, 4, 9, 11} int b = {11, 11, 7, 9, 16, 4, 1}の時だけうまくいきません。なにが悪いのでしょうか??


bool sameSet(const int a[], int aSize, const int b[], int bSize)

{
if( aSize > bSize)
{
for(int i = 0; i < aSize; i++)
{
for(int ab = 0;ab < bSize;ab++)
{
if(a[i] != b[ab])
{
return false;
}
}

}
}
else
{
for(int i = 0; i < bSize; i++)
{
for(int ab = 0;ab < aSize;ab++)
{
if(b[i] != a[ab])
{
return false;
}

}

}

}
return true;
}

閲覧数:
166
回答数:
2

違反報告

ベストアンサーに選ばれた回答

niikoujpさん

2013/9/2516:03:21

「同じ数字が入っていれば」とはどういう意味でしょう。

例えば、例でいえば、
a[0]は「1」
b[0]は「11」
一発目から0番目同志を比較すれば、falseになってしまいますよね。

「違う数字が1つでも配列内に入っていれば」false
「1つでも同じ数字が配列内に入っていれば」true
で上のコードの上半分の一部を書くと
下記のカンジですかね。
後はご自分で改良してください。


for(int i = 0; i < aSize; i++) {
int flag=0;//合致したかフラグを初期化(0=合致せず)
for(int ab = 0;ab < bSize;ab++) {
if(a[i] == b[ab]) {
//return false;
flag=1;//1個でも合致した=フラグセット
break;//のでbreak
}//endif
}//for(ab)
if(flag==0) return false;//1個も合致しなかった
}//for(i)

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

k03********さん

2013/9/2515:25:22

evpr0099さん

main()をつけると、テストができる。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる