gpt4 book ai didi

c - 在 C 语言中 - 计算 1 的序列

转载 作者:行者123 更新时间:2023-11-30 14:33:37 25 4
gpt4 key购买 nike

给定一个二进制数,例如“100001111111110000001”,其中每个位都放置在一个数组中,以便该数组如下所示:[1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1]

我想找到任何 1 序列的起始索引和结束索引。

所需的输出(从右到左阅读):

-起始索引 = 0

-结束索引 = 0

(获取此数字并相应地执行某些操作)

然后:

-起始索引 = 7

-结束索引 = 15

(获取此数字并相应地执行某些操作)

最后一次出现 -

-起始索引 = 20

-结束索引 = 20

(获取此数字并相应地执行某些操作)

如何用 C 语言实现所需的输出?

附加我尝试过的代码:

   for (int i = 0; i< counter; i++) {
if (bitArray[i] == 0) {
while (bitArray[i] == 0) {
startP++;
endP++;
i++;
}
}
if(bitArray[i] == 1) {
startP++;
while(bitArray[i+1]==1) {
endP++;
i++;
}
}
if (endP == startP) {
//do something
} else if (endP == (startP + 1)) {
//do something
} else if (endP > (startP + 1)) {
// do something
}
endP++;
startP = endP;
}

*counter = 数组的长度

*endP 和 startP int,已初始化。

*bitArray 所描述的数组。

最佳答案

我不知道你的代码到底应该做什么,但如果你只想打印 1 组的开始和结束索引,我对你的代码做了一些更改:

#include <stdio.h>
#include <stdlib.h>

int main()
{
char msg[64];

int bitArray[] = {1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1};
int inSet = 0;
int start;
int end;

for (int i = 0; i < sizeof(bitArray); i++) {
if (bitArray[i] == 1 && inSet == 0) {
inSet = 1;
start = i;
}
else if(bitArray[i] == 0 && inSet == 1) {
inSet = 0;
end = i - 1;
snprintf(msg, sizeof(msg), "-starting index = %d\n-ending index = %d\n", start, end);
printf(msg);
}
}
if(inSet == 1)
{
end = sizeof(bitArray) - 1;
snprintf(msg, sizeof(msg), "-starting index = %d\n-ending index = %d\n", start, end);
printf(msg);
}
}

关于c - 在 C 语言中 - 计算 1 的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59228907/

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