gpt4 book ai didi

c - 如何将不同的元素插入数组?

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:41 26 4
gpt4 key购买 nike

我正在尝试将不同的元素插入到矩阵中。为此,我创建了一个 [行 x 列] 维度的数组,并将我插入矩阵的每个元素放在那里,然后立即读取数组,如果矩阵的元素与数组中的元素相同,则让用户重新引入[m][n] 元素放入数组中。但是这样做并没有像我预期的那样工作,而且看起来有点乱;怎样才能更“简单”?

void rellenarMatriz(int **a, int f, int c) {

int i, j, aux, k, l;

for(i = 0; i < f; i++) {

for(j = 0; j < c; j++) {

//Introducir numero
printf(" [%d][%d]> ", i+1, j+1);
scanf("%d", &a[i][j]);

//Comprobar que ese elemento no está en la matriz
contieneElemento(a, i, j);
}

printf("\n");
}
}

注意:这不是家庭作业,我正在努力自学。

解决方案?

void contieneElemento(int ** a, int ff, int cf) {

int i, j;

for(i = 0; i <= ff; i++) {

for(j = 0; j <= cf; j++) {

printf("[%d][%d]>\n", i + 1, j + 1);

do {

printf("> Elemento repetido.\n");
printf(" *[%d][%d]> ", ff + 1, cf + 1);
scanf("%d", &a[ff][cf]);
} while(a[i][j] == a[ff][cf]);
}
}
}

最佳答案

最简单 的方法就是查看您的矩阵/数组,看看您要插入的元素是否已经存在。我建议你有一个单独的功能来告诉你。

bool ya_tiene_elemento( int **a, int f, int c, int hasta_f, int hasta_c, int elt )
{
if (hasta_f > 0)
for (int i = 0; i < hasta_f-1; i++)
for (int j = 0; j < c; j++)
if (a[i][j] == elt) return true;
for (int j = 0; j <= hasta_c; j++)
if (a[hasta_f][j] == elt) return true;
return false;
}

一个玩具就够了。

如果您希望显着提高效率,请考虑使用 Bloom Filter决定是否要实际扫描矩阵/数组以进行匹配。

希望这对您有所帮助。

关于c - 如何将不同的元素插入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33963984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com