如何计算矩阵中不同元素的数量?C程序设计语言

如何计算矩阵中不同元素的数量?C程序设计语言,c,matrix,C,Matrix,我有一个整数矩阵,需要计算矩阵中除了0之外的不同整数的数量。 比如说在这个里面, 01 0 300 07 907 程序应该给出结果4,因为您可以找到除0之外的4个不同整数。 请记住,我必须将其应用于以这种方式初始化的矩阵: celula ** matrizInit(int linhas, int colunas){ int i, j; celula ** matriz; matriz = (celula **)malloc(sizeof(celula)*linhas);

我有一个整数矩阵,需要计算矩阵中除了0之外的不同整数的数量。 比如说在这个里面,

01 0
300
07
907

程序应该给出结果4,因为您可以找到除0之外的4个不同整数。 请记住,我必须将其应用于以这种方式初始化的矩阵:

celula ** matrizInit(int linhas, int colunas){
    int i, j;
    celula ** matriz;

    matriz = (celula **)malloc(sizeof(celula)*linhas);
    for(i = 0; i < linhas ; i++){
        matriz[i] = (celula *)malloc(sizeof(celula)*colunas);
        for(j = 0; j < colunas; j++){
            matriz[i][j].linha = 0;
            matriz[i][j].coluna = 0;
        }
    }
    return matriz;
celula**matrizInit(林哈斯、科鲁纳斯){
int i,j;
苦参;
matriz=(celula**)malloc(sizeof(celula)*linhas);
对于(i=0;i
}

每个整数字段都可以使用matriz[i][j].[插入\u结构的\u字段\u]来访问。
提前谢谢

如果您要查找的整数范围为1到9,我的想法是获取一个数组,并将出现的情况存储在那里,然后在数组中循环计数

bool inMatrix[9] = {false};
因此,如果您找到了数字5,您将标记位置4(因为在C数组中,从0开始,我们将保留为1)

然后循环引用数组并计算真实值

for (occurrences=0,i=0; i < 9; i++) {
    if (inMatrix[i]) occurrences++;
}
for(出现次数=0,i=0;i<9;i++){
if(inMatrix[i])出现次数++;
}
你在事件中有数字。瞧


但是,如果整数范围很宽,您肯定必须将所有数字存储在一个集合中,限制重复的数字,然后对集合中的元素进行计数。

这是散列集合的作业,您可以循环遍历元素,将它们添加到集合中,然后获得集合的计数/大小/长度。您有什么问题?你想让我们为你编写整个程序吗?
(celula**)malloc(sizeof(celula)*linhas)->
(celula**)malloc(sizeof(celula*)*linhas)使用散列,或者在工作序列排序后对其进行扫描。
for (occurrences=0,i=0; i < 9; i++) {
    if (inMatrix[i]) occurrences++;
}