gpt4 book ai didi

C++问题用另一个结构的值填充结构

转载 作者:行者123 更新时间:2023-11-28 04:29:38 26 4
gpt4 key购买 nike

我在尝试弄清楚为什么我无法通过一段代码获得正确的功能时遇到了问题。我环顾四周试图找到解决方案,但是我一直无法这样做。下面是我的代码示例:

//Structs
typedef struct
{
int gene[60];
int fitness;

} individual;

typedef struct
{
int cond[5];
int out;
}rule;

//Array of individuals
individual population[P]

int function(individual solution){
int k = 0;
//Array of rules
rule rulebase[10]
for (int i = 0; i < 10; i++){
for (int j = 0; j < 5; j++){
rulebase[i].cond[j] = solution.gene[k++];
}
rulebase[i].out = solution.gene[k++];
}

for (int i = 0; i < 5; i++){
cout << rulebase[0].cond[i];
}

传入函数的解是'population'中的第一个个体,基因数组只包含二进制数,例如:

gene = [0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1] //There will be 60 in total

所需的功能是用在解决方案中找到的值填充规则库中的规则结构。例如,使用上面的示例,规则库中的第一条规则将在“cond”数组中具有以下值:

[0, 0, 1, 0, 1]

'out' 将是解决方案中的下一个整数:

[1]

然后下一个规则将以相同的方式填充解决方案中的下一个值。

我遇到的问题是代码似乎用解决方案中的所有值填充每个规则的“cond”数组,这与上述所需的方式相反。例如,当我打印“rulebase[0]”中的基因时,我得到:

[0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1]

相对于:

[0, 0, 1, 0, 1]

我似乎无法弄清楚为什么我会遇到这个问题,因为代码在我看来应该可以工作?任何帮助将不胜感激,因为我正在努力奋斗!

最佳答案

一条规则在 cond 中只包含 5 个值,而不是您显示的 10 个。它只是打印错误的 rulebase[0] 值的代码,即它超出了数组边界并打印 - 除了 cond 值rulebase[0] - 下一个规则的 outcond 的值,在内存中是下一个。

关于C++问题用另一个结构的值填充结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290447/

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