gpt4 book ai didi

c - 循环中的数组没有获得正确的值

转载 作者:行者123 更新时间:2023-12-03 09:58:55 25 4
gpt4 key购买 nike

我的问题:

我有一个物品和一个包的结构;

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];
    }
    }

    调用函数:
    item_InitUsableItems(testValues, testValues[0], items);

    然后我将所有项目打印到控制台仅用于测试目的:
    for (int i = 0; i < 4; i++){
    printf("%d - %d\n", items[i].value, items[i].weight);
    }

    这给了我这样的结果:
    6 - 2
    -1231927808 - -1282274509
    10 - 4
    1666274963 - 22033

    预期的结果是这样的:
    6 - 2
    10 - 4
    12 - 6
    13 - 7

    我是 C 的新手,大约一个星期就开始学习了!如果您发现其他不正确的地方,请告诉我!

    最佳答案

    for (int i = 2; i < nItems + 2; i+=2) {
    items[i].value = values[i];
    items[i].weight = values[i+1];
    }

    循环初始化 item[2]通过 item[5] .它应该初始化 item[0]通过 item[3] .
    for (int i = 0; i < 4; i++){
    printf("%d - %d\n", items[i].value, items[i+1].weight);
    }

    为什么 ii+1 ?这些指数应该相同,所以值(value)和重量来自同一个项目。

    关于c - 循环中的数组没有获得正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59060813/

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