c++ 编程语言

#include <iostream>
#include <string.h>

using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void RLC(char *s)//游程编码
{
int i=0;
while(*s)
{
if(*s=='1') i++;
else if(*s=='0')
{
printf("%d",i);
i=0;
}
s++;
}
if(i>0) printf("%d",i);//输出末尾可能存在的 1 个数
}

int main(int argc, char** argv) {
char s[]="11011100010101";
RLC(s);

return 0;
}
急求!!!上面的测试向量,如果里面的1的个数过多,例如00 110 111111111 1110 00 10 10 1,根据10进制的要求,需要进行切分为9个1和3个1,这里该怎么修改,才能得到结果为0029300111,谢谢了!

第1个回答  2017-04-20
你这个代码明显不对,字符串循环测试*s,遇到0就结束了,不可能测整个串。
再者,你说你的串要输出0029300111,好像不对吧?源串最后5组是30111,你要的是300111,不知道你是不是打错了。何况即便是你打错了,源串怎么分组你也不告诉人家啊。更何况你的函数注释是游程编码,你这根本不是游程吧?算法你都还没理解。
最后,每次都得让我再说一遍,贴代码时请选编辑框里的“代码”按钮。追问

谢谢你的建议,我说的你可能不理解

相似回答