检查数组的特定列中是否存在整数

时间:2012-04-22 13:28:37

标签: c++ arrays int

我要做以下练习:

写一个给出两个整数(x和k)和一个M×N矩阵的函数, 如果元素至少出现k次,则返回TRUE 在矩阵的至少x列中。

这是我的解决方案,但有一些错误:

#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;
}

2 个答案:

答案 0 :(得分:1)

您需要将任务分成较小的块。要检查数字是否在x列中出现k次,请首先编写一个函数来检查一列中是否出现一次数字k次。该函数将有一个for循环。当你写它时,测试它,看看你是否正确。然后把这个函数放在另一个函数中,非常类似for循环,你就完成了。

答案 1 :(得分: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;
}

自己优化;)