C 循环中的数组未获取正确的值
我的问题是: 我有一个物品和一个包的结构C 循环中的数组未获取正确的值,c,arrays,linux,for-loop,pointers,C,Arrays,Linux,For Loop,Pointers,我的问题是: 我有一个物品和一个包的结构 struct Item { int value; int weight; }; struct Bag { int maxWeight; Item *items; int maxItems; int itemsHolding; }; 在我的主要部分中,我有以下阵列: int testValues[] = { 4, 11, 6, 2, 10, 4, 12, 6, 13, 7, 23 }; 索引0:项目
struct Item {
int value;
int weight;
};
struct Bag {
int maxWeight;
Item *items;
int maxItems;
int itemsHolding;
};
在我的主要部分中,我有以下阵列:
int testValues[] = { 4, 11, 6, 2, 10, 4, 12, 6, 13, 7, 23 };
- 索引0:项目总数
- 指标1:袋子的总重量
- 最后一个索引:忽略此问题
- 所有其他索引都是“一对”
- 6将表示第一项的值
- 2将代表第一个项目的重量
- 等等
Item items[testValues[0]];
此函数应将所有值组织到相应的项中:
void item_InitUsableItems(int *values, int nItems, Item *items) {
for (int i = 2; i < nItems + 2; i+=2) {
items[i-2].value = values[i];
items[i-2].weight = values[i+1];
}
}
然后,我将所有项目打印到控制台,仅用于测试目的:
for (int i = 0; i < 4; i++){
printf("%d - %d\n", items[i].value, items[i].weight);
}
预期结果如下:
6 - 2
10 - 4
12 - 6
13 - 7
我是新来C的,学习C大约一周了!如果你发现任何不正确的地方,请告诉我
for (int i = 2; i < nItems + 2; i+=2) {
items[i].value = values[i];
items[i].weight = values[i+1];
}
为什么i
和i+1
?这些索引应该相同,因此值和权重来自同一项。无效项\u初始可用项(int*值、int nItems、item*项){
void item_InitUsableItems(int *values, int nItems, Item *items) {
int j = 2;
for (int i = 0; i < nItems; i++) {
items[i].value = values[j];
j++;
items[i].weight = values[j];
j++;
}
int j=2;
对于(int i=0;i
}
这解决了我的问题。可能不是最漂亮的解决方案,但它很有效 查看是否可以基于
i
计算j
。那么您就不需要j
。
for (int i = 2; i < nItems + 2; i+=2) {
items[i].value = values[i];
items[i].weight = values[i+1];
}
for (int i = 0; i < 4; i++){
printf("%d - %d\n", items[i].value, items[i+1].weight);
}
void item_InitUsableItems(int *values, int nItems, Item *items) {
int j = 2;
for (int i = 0; i < nItems; i++) {
items[i].value = values[j];
j++;
items[i].weight = values[j];
j++;
}