gpt4 book ai didi

无法正确地将值分配给自定义数据类型矩阵单元格

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:23 25 4
gpt4 key购买 nike

我定义了一个自定义数据类型:

typedef CustomDatatype {
int id;
OtherCustomDatatype *p;
} CustomDatatype;

问题是我需要处理二维 CustomDatatype** 矩阵,我需要正确访问矩阵的单元格并修改 id 字段。

CustomDatatype **assign_values_to_random_cells(CustomDatatype **matrix, 
const int width, const int n, const int total)
{
int counter = 0;
int random_number;
int i;
int j;
int random_value;

while (counter < n)
{
random_number = (rand() % total);
i = random_number / width;
j = random_number - (width * i);

if (perform_a_check(matrix, i, j))
{
random_value = random_number%15;
(*matrix+(random_number))->id = random_value;
counter++;
}
fprintf(stderr, "Counter: %d ", counter);
fprintf(stderr, "Value: %d ", (*matrix+(random_number))->id);
fprintf(stderr, "Position %d (%d, %d)\n", random_number, i, j);
}

return matrix;
}

因此,此函数返回的随机数比 n 少或多,这正是我所期望的。 int ** 矩阵的相同算法工作得很好,所以我想知道我是否以正确的方式访问矩阵单元格。

我试过:

  • matrix[i][j].id = random_value,这导致除了我期望看到的 n 值之外还有重复值;
  • (*matrix+(cell_number))->id = random_value,这导致了错误定位的值,绝对不是 n 的数量;
  • (*(*matrix+(cell_number))).id = random_value 同上一项。

更新#2:提供扩展输出

Matrix init:
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --


Counter: 0
Position: 32 (2, 10) (Empty cell!) Value: 2
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- 2
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --




Counter: 1
Position: 45 (4, 1) (Empty cell!) Value: 0
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- 2
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --




Counter: 2
Position: 64 (5, 9) (Empty cell!) Value: 4
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- 2
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- 4 --
-- 4 -- -- -- -- -- -- -- -- --




Counter: 3
Position: 11 (1, 0) (Empty cell!) Value: 11
-- -- -- -- -- -- -- -- 11 -- --
11 -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- 2
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- 4 --
-- 4 -- -- -- -- -- -- -- -- --




Counter: 4
Position: 43 (3, 10) (Empty cell!) Value: 13
-- -- -- -- -- -- -- -- 11 -- --
11 -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- 2
-- -- -- -- -- -- -- -- -- -- 13
-- -- 13 -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- 4 --
-- 4 -- -- -- -- -- -- -- -- --




Counter: 5
Position: 24 (2, 2) (Empty cell!) Value: 9
-- -- -- -- -- -- -- -- 11 -- --
11 -- -- -- -- -- -- -- -- -- 9
-- -- 9 -- -- -- -- -- -- -- 2
-- -- -- -- -- -- -- -- -- -- 13
-- -- 13 -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- 4 --
-- 4 -- -- -- -- -- -- -- -- --

我做错了什么?

最佳答案

我必须承认,我并不完全理解您要实现的目标,但是:

  • 您正在将值写入随机位置,因此如果您执行此过程 N 次,无法保证您将写入 N 个唯一值
  • cell_number 从未初始化

关于无法正确地将值分配给自定义数据类型矩阵单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31435429/

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