2014-04-05 54 views
-1

我在研究C编程语言,并且遇到了一个我试图解决的问题。我试图寻找我的问题的答案,但我找不到。如何检查一个元素是否在矩阵(C)中存在多次?

我的问题是如何检查一个元素是否在矩阵中存在多次。此外,如果它存在多次但在同一行中,则不计数。

我试着写了一个函数来做到这一点,但是当我看到它的时候,我很头痛,呵呵,所以我想我从一开始就做错了。

有人可以告诉我该怎么做吗?

在此先感谢。

+0

让我们看看函数。您会在短时间内发现您出错的原因以及原因。发布时,请提供一个描述,看看它在做什么,以及你期望它做什么。 – WhozCraig

+0

你想输出在矩阵中重复的数字,但在其他行中? – nomorequestions

+2

你可以发布你尝试过的代码吗?你需要的是遍历矩阵的每个元素,并将其与所有其他元素进行比较。 – Dan

回答

0
  1. 检查矩阵中是否存在多于一次的元素:对整个数组进行排序(就好像它是单个线性向量一样)。然后在矢量中进行线性检查,并检查相邻元素是否相同。
  2. 检查一个元素是否在矩阵的一列中存在多次:执行与1中相同的操作,但仅限于每列。
0

对于你所要求的,你需要分析矩阵中的所有元素。如果该元素已在该列中找到,则还需要跟踪。下面是一个示例代码:

int count(int **matrix, int rows, int cols, int number) { 
    int count=0, found_in_row=0, i, j; 
    for(i=0; i<rows; i++) { 
    for(j=0; j<cols; j++) { 
     if(matrix[i][j]==number && found_in_row==0) { 
     count++; 
     } 
    } 
    found_in_row=0; 
    } 
return count; 
} 

现在假设我有这个矩阵:

1 2 1 
1 2 3 

通过调用count(matrix, 3, 3, 1)您将获得2作为答案。这意味着数字1出现两次(在第一行中计数第二个数字)。 因此,通过在您的矩阵上调用count,您将知道是否number通过检查是否大于1而发生。

+0

这很有帮助,但我的意思是检查矩阵内**元素是否存在多次。所以函数需要检查矩阵中的每一个元素,如果它再次出现,但是在不同的行中。 – user3501779

+0

我编辑了我的答案添加一个例子。如果这不是你问的,请给我更多关于你想要的信息 – WileTheCoyot

+0

你正在发送函数调用号码。我的意思是,函数必须检查矩阵内部的一个数字是否自己重复。该函数没有收到一个数字并检查它是否在矩阵中存在多次,它检查矩阵中是否再次出现矩阵中的数字。 – user3501779

相关问题