0

次の演習を行う必要があります。

2 つの整数 (x と k ) と MXN 行列を指定して、行列の少なくとも x 列に少なくとも k 回出現する要素がある場合に TRUE を返す関数を記述します。

これは私の解決策ですが、何か問題があります:

#include <iostream>
using namespace std;

const int DIM = 3;

bool check ( int matrix[DIM][DIM], int element,  int k,  int x )
{
    bool occur = false;
    int i,j = 0;
    for ( i=0; i<DIM; i++ )
    {
        for ( j=0; j<DIM; j++)
        {
            while ( i<k && occur)
            {
                matrix[i][j] == element;
                i++;
            }
        }
    }
    return occur;
}

int main ()
{
    int matrix[DIM][DIM] = {{1,2,3},
                            {4,1,6},
                            {7,8,9}};
    int x = 2;
    int k = 1;
    int elemento = 1;
    if ( check (matrix, element, k , x))
    {
        cout << "l'elemento "<< elemento <<" ricorre "<< k <<" volta/e in "<< x <<" colonna/e";
    }
    return 0;
}
4

2 に答える 2

1

タスクを小さなチャンクに分割する必要があります。数値が x 列で k 回発生するかどうかを確認するには、まず、数値が 1 列で k 回発生するかどうかを確認する関数を作成します。その関数には単一の for ループがあります。書いたら、テストして、正しくできたかどうかを確認します。次に、その関数を別の非常によく似た for ループに入れれば完了です。

于 2012-04-22T13:35:03.833 に答える
0
bool check(int matrix[M][N], int element, int k, int x)
{
        int c1 = 0;
        for (int i = 0; i < M; ++i) {
                int c2 = 0;
                for (int j = 0; j < N; ++j) {
                        if (matrix[i][j] == element)
                                ++c2;
                }
                if (c2 >= k)
                        ++c1;
        }
        return c1 >= x;
}

自分で最適化してください;)

于 2012-04-22T18:47:13.113 に答える