gpt4 book ai didi

在 do while 中继续计算,即使不存在任何列

转载 作者:太空狗 更新时间:2023-10-29 15:37:30 24 4
gpt4 key购买 nike

我正在尝试做的(不是很成功)是如果我的代码检测到信号 (if(matrix[i][j] ==1)) coming (1 or 0) for接下来的几个步骤,我希望我的代码写入一个新矩阵:newmatrix[i][j]=10,如果不继续,则使用 0。到目前为止,这是我的代码:

    for (i = 0; i < rows; i++) {
j = 0;
do {
if (matrix[i][j] == 1) {
int m = j;
while (j < m + 3) {
newmatrix[i][j] = 10;
printf("newmatrix[%i][%i] and %f\n", i, j, newmatrix[i][j]);
j++;
continue;
}
}
if (matrix[i][j] == 0) {
newmatrix[i][j] = 0;
printf("newmatrix[%i][%i] and 0 is %f\n", i, j, newmatrix[i][j]);
j++;
continue;
}
j++;
} while (j < MAXTIME);
}
}

问题是,如果在末尾附近有信号而不是在列计数达到最大数量时停止,代码会插入新列,即使它们只有 10:

我的错误在哪里,有人可以指出我正确的方向吗?有没有办法用 goto 语句来做这个更干净?

最佳答案

这是一个使用临时变量的更简单的方法:

for (i = 0; i < rows; i++) {
int spike = 0;
for (j = 0; j < MAXTIME; j++) {
if (matrix[i][j] == 1) {
spike = 3;
}
if (spike) {
newmatrix[i][j] = 10;
spike--;
} else {
newmatrix[i][j] = 0;
}
printf("newmatrix[%i][%i] is %f\n", i, j, newmatrix[i][j]);
}
}

注意事项:

  • 我假设 matrix[i][j]01。如果其他值是可能的,并且 newmatrix[i][j] 应该对这些单元格保持不变,则应该修改代码。
  • 建议只修改 for 更新子句中的循环索引。 do/while 循环是出了名的容易出错,尤其是嵌套循环也会像您的代码中那样修改循环索引。

关于在 do while 中继续计算,即使不存在任何列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49315651/

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