OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3476|回复: 2

一道C语言作业题,希望有高手指点指点代码思路,谢谢丫

[复制链接]

4

主题

8

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2015-11-27
在线时间
18 小时
发表于 2016-5-19 14:31:48 | 显示全部楼层 |阅读模式
2金钱
项目描述
利用C语言实现如下功能,注意函数声明的通用性和指向性问题。
游程编码问题
请实现游程编码的编码函数和解码函数。
提示:游程编码的概念是,
给一块数据,如:0x11 0x11 0x11 0x22 0x33 0x33 0x33 0x33 0x33,
那么游程编码的结果是:0x11 0x3 0x22 0x1 0x33 0x5

最佳答案

查看完整内容[请看2#楼]

#include #define RESULT_SIZE_MAX 50 int process(unsigned char buf[], unsigned char res[][2], int buf_size) { int i; int result_index; unsigned char now_data; now_data = buf[0]; result_index = 0; res[result_index][0] = now_data; res[result_index][1] = 1; for(i=1; i
STM32er
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

146

帖子

1

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2014-1-2
在线时间
156 小时
发表于 2016-5-19 14:31:49 | 显示全部楼层
#include <stdio.h>

#define RESULT_SIZE_MAX  50

int process(unsigned char buf[], unsigned char res[][2], int buf_size)
{
        int i;
        int result_index;
        unsigned char now_data;
       
        now_data = buf[0];
        result_index = 0;
        res[result_index][0] = now_data;
        res[result_index][1] = 1;
        for(i=1; i<buf_size; i++)
        {
                if(buf[i] == now_data)
                {
                        res[result_index][1]++;
                }
                else
                {
                        now_data = buf[i];
                        result_index++;
                        res[result_index][0] = now_data;
                        res[result_index][1] = 1;
                }
        }
        return result_index;
}

void main(void)
{
        unsigned char buffer[] = {0x11,0x11,0x11,0x22,0x33,0x33,0x33,0x33,0x33};
        unsigned char result[RESULT_SIZE_MAX][2];
        int i, buf_size, res_size;

        buf_size = sizeof(buffer)/sizeof(unsigned char);
        for(i=0; i<buf_size; i++)
        {
                printf("0x%02x ", buffer[i]);
        }
        printf("\n");

        res_size = process(buffer, result, buf_size);
        for(i=0; i<=res_size; i++)
        {
                printf("0x%02x 0x%02x ", result[i][0], result[i][1]);
        }
        printf("\n");
       
        getchar();
}

回复

使用道具 举报

4

主题

8

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2015-11-27
在线时间
18 小时
 楼主| 发表于 2016-5-20 15:37:18 | 显示全部楼层
登云钓月 发表于 2016-5-19 16:04
#include

#define RESULT_SIZE_MAX  50

你好,能不能简单说一下设计思路呢?这里没有注释哟→_→,谢谢你
STM32er
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表