0

2 次元配列に関する教科書のサンプルに取り組んでいます。次の例では、ユーザーが値を入力できるようにし、配列を検索して値を含む要素の場所を返すか、値が存在しない場合は警告します。

私が疑問に思っているのは、複数の要素にユーザーの値が含まれている場合はどうなるでしょうか? コードでは、2 次元配列を初期化するためにいくつかのループを追加しましたが、複数の要素に同じ値が含まれています。検索値を含む複数の要素を返すように検索を設定するにはどうすればよいですか?

#include <stdio.h>

int main() {

int iTwoD[3][3];
int iFoundAt[2] = {0};
int x, y;
int iFound, iValue = 0;


//initialize the 2-d array
for ( x = 0; x<=2; x++) {

  for (y=0;y<=2;y++)
    iTwoD[x][y] = (x+y);
} //end outer loop

//print the 2-d array
for (x=0; x<=2; x++){

  for (y=0;y<=2;y++)
    printf("iTwoD[%d][%d] = %d\n", x, y, iTwoD[x][y]);

}//end outer loop

//Get the user's value to search for
printf("\nEnter your search value: ");
scanf("%d", &iValue);

//Search the 2-d array for user's value
for (x = 0; x<=2; x++) {
  for (y = 0; y<=2; y++) {
    if ( iTwoD[x][y] == iValue) {
      iFound = 1;
      iFoundAt[0] = x;
      iFoundAt[1] = y;
      break;
    } //end if
  } //end inner loop
} //end outer loop

if (iFound ==1)
  printf("\nFound value in iTwoD[%d][%d]\n", iFoundAt[0], iFoundAt[1]);
else
  printf("\nValue not found\n");

return 0;
} //end main
4

2 に答える 2

1
if ( iTwoD[x][y] == iValue)
{
   arrayOfResults[i][0]=resultx;
   arrayOfResults[i++][1]=resulty;
}
于 2013-03-04T23:41:54.330 に答える
1

iFoundAt(x,y) の複数のタプルを保持できるようにするには、を増やす必要があります。さらにbreak、見つかった値にもかかわらずマトリックス全体を検索する必要があるため、検索から を削除する必要があります。

于 2013-03-04T23:42:51.430 に答える