-1

プログラムに問題があるようです。正常にコンパイルされますが、最初のループに到達すると、正の整数を要求されますが、想定どおりに再度要求されます。空白のスペースを飛び越えて、想定外の別の番号を入力するまでそれ以上実行されません。しかし、数値を入力すると、戻って整数を入力するように求められますが、問題は、プログラムを終了するまで、IT がこの無限の回数を実行することです。なぜこれが起こっているのかについての提案はありますか?

/* Search the entries of the n X n matrix mat in rowwise order for an entry to item */
#include <iostream>

using namespace std;

int main(void)

{ 

int n=10, item, row=3, col=3, mat[row][col];
bool found;

for (int row = 0; row < 3; row++)
        for (int col = 0; col < 3; col++)
        {
                cout << "Enter Positive Integer :  ";
                        cin >> row;
                cout << " Enter Positive Integer : ";
                cin >> mat[row][col];
        }

cout << "Enter a positive integer you want to be searched: ";
        cin >> item;


for(int i=0; i<row; ++i)
{
     for(int j=0; j<col; ++j)
     {
          if(mat[row][col] == item)
              found = true;
          else
               found = false;
     }  
}

if(found==true)
  cout << "item found" ;
else
    cout << "item found ";

return 0;
}
4

4 に答える 4

0

ループカウンターとユーザー入力ストレージに同じ変数を使用しているように見えます。それはあなたが望むことをしない運命にあります。次のようにします。

for (rowCounter = 0; rowCounter < 3; rowCounter++) {
    for (colCounter = 0; colCounter < 3; colCounter++) {
        cout << “Give me value for (“ << rowCounter << “,” << colCounter << “) :”;
        cin >> mat[rowCounter][colCounter];
    }
}

そして残りのコード

于 2013-09-04T18:55:21.970 に答える
0

いくつかの問題があったようです。

  1. 最初の for ループでは、間違った変数 (cols ではなく col) をインクリメントしていました。また、3x3 マトリックスで 0 から 4 になりました。
  2. ユーザーに2つの数字を要求し、次にマトリックスに数字を入力するようにユーザーに要求しましたが、それは3x3マトリックスのみであり、ユーザーは簡単に範囲外になる可能性があります。あなたがしようとしていたのは、マトリックスにユーザー番号を入力することだったと思います。だから私はその変更をしました。
  3. 2 番目の for ループでは、found =true を設定しますが、ループは続行されます。つまり、最後に検索した数値が false の場合は、found = false になり、mat ではなく mat[i][j] に変更されます。 [行][列]なので、毎回同じものをチェックするわけではありません。
  4. found = true と found = false の両方が「見つかった項目」を返します。2 番目のハードコードされた文字列で「not」を省略したと思います。
  5. 最後に出力を読むことができるように一時停止を追加しました。

私はそれらを修正しましたが、このコードはあなたが今したいことをするはずです。

#include <iostream>

using namespace std;

int main(void)

{ 

  int n=10, item, row = 3, col = 3;
  int mat[3][3];
  bool found = false;
  int j,k;

  for (int rows = 0; rows < 3; rows++)
      for (int cols = 0; cols < 3; cols++)
      {
            cout << "Enter row Integer: ";
            cin >>j;
            cout << "Enter col Integer: ";
            cin >> k;
            cout << "Enter Positive Integer :  ";
            cin >> mat[j][k];
      }

  cout << "Enter a poistive integer you want to be searched: ";
  cin >> item;


  int flag = 0;

  for(int i=0; i<row; ++i)
  {
     for(int j=0; j<col; ++j)
     {
        if(mat[i][j] == item)
        {
            flag = flag + 1;
        }
     }  
  }

  if(flag > 0)
   found = true;

  if(found==true)
  cout << "item found" ;
  else
  {
     cout << "item not found ";
  }

   system("PAUSE");

   return 0;
}
于 2013-09-04T19:13:32.030 に答える