bool found;
:
return found;
ブール値は通常、true/false に制限され、多くの場合 1/0 として表されます。ゼロ以外の値を a に配置するbool
と、強制的に になる可能性が高くなり1
ます。
見つかった場所のインデックスを返したい場合は、おそらく次を使用する必要がありますint
。
int found;
ただし、その変更を行っても機能しません。
int linsearch(T arr[],int size,T target)
{
int begin;
int loc;
int found; // <<-- changed this
for(begin=0;begin<size&&target!=arr[begin];begin++);
loc = begin;
if(target==arr[loc])
found = loc;
else
found = -1;
return found;
}
これは、アイテムが見つからない場合begin
(およびloc
に設定したためbegin
) がそのまま残されるsize
ため、 を使用して配列の末尾を超えてチェックしているためですarr[loc]
。
ループの直後に、次のようなものを使用して、その状態を適切に確認する必要があります (loc
不要なので完全に削除します)。
if (begin == size)
found = -1;
else
found = begin;
いずれにせよ、コードはおそらく大幅に冗長ではなくなります。
int linsearch (T arr[], int size, T target)
{
int loc;
for (loc = 0; loc < size; loc++)
if (target == arr[loc])
return loc;
return -1;
}