辉煌仪奇 2022-03-29 15:47 采纳率: 47.4%
浏览 173
已结题

c++ 代码如何运行,优化

被迫使用c++,查找百度一下午写出了这个东西.希望能帮忙解惑
我写了一个代码如下

#include <iostream>

double *  disp11(unsigned char *rev)
{
    /*
    *
    */
    union gyro
    {
        char ch[4];
        float f;
        int si;
    };
    union gyro Gyrox[4], Gyroy[4], Gyroz[4];
    unsigned short int data_temp1;
    int  i, j;
    double angleRT[16];
    unsigned short int YearMonth;     //年
    unsigned short int Product_ID_T; //产品编号

    i = 2;
    Product_ID_T = rev[2] + rev[3] * 256; //产品编号
    YearMonth = rev[4] + rev[5] * 256;      //年

    i = 11;
    j = 0;
    Gyrox[0].ch[0] = rev[i++]; //经度
    Gyrox[0].ch[1] = rev[i++];
    Gyrox[0].ch[2] = rev[i++];
    Gyrox[0].ch[3] = rev[i++];
    angleRT[0] = Gyrox[0].f;
    

    i = 15;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //纬度
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[1] = Gyrox[0].f;
    i = 19;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //高度,m
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[2] = Gyrox[0].f;

    i = 23;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //航向
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[3] = Gyrox[0].f;

    i = 27;
    j = 0;
    Gyrox[0].ch[j++] = rev[i++]; //步数
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    Gyrox[0].ch[j++] = rev[i++];
    angleRT[4] = Gyrox[0].f;

    //步幅度,低字节
    data_temp1 = rev[32] * 256 + rev[31];
    angleRT[5] =(double)data_temp1;

    angleRT[6] =(double)rev[33]; //卫星数
    angleRT[7]= (double)rev[34]; //状态字1
    angleRT[8] = (double)rev[35]; //状态字2
    angleRT[9] = (double)Product_ID_T; //状态字2


    angleRT[10]=(double)YearMonth;//年
    angleRT[11]=(double)rev[6];//月
    angleRT[12]=(double)rev[7];//日
    angleRT[13]=(double)rev[8];//时
    angleRT[14]=(double)rev[9];//分
    angleRT[15]=(double)rev[10];//秒

    return angleRT;

}

using namespace std;

int main() 
{
    // AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF
    // 假如test = [AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF]
    // cout  disp11(test)
    return 0;
}

功能函数我按照逻辑写出来了,但是我不知道如何运行它,也不知道如何添加头文件让他可以运行,测试数据在注释第一行,,按照函数的入口类型定义后传给函数,最后打印函数返回值

  • 写回答

5条回答 默认 最新

  • 急速光粒 2022-03-29 16:19
    关注

    代码调了一下,可以运行了。

    这是运行结果:

    img

    代码如下:

    
    #include <iostream>
    
    double *  disp11(unsigned char *rev)
    {
        /*
        *
        */
        union gyro
        {
            char ch[4];
            float f;
            int si;
        };
        union gyro Gyrox[4], Gyroy[4], Gyroz[4];
        unsigned short int data_temp1;
        int  i, j;
        double* angleRT = new double[16];
        unsigned short int YearMonth;     //年
        unsigned short int Product_ID_T; //产品编号
    
        i = 2;
        Product_ID_T = rev[2] + rev[3] * 256; //产品编号
        YearMonth = rev[4] + rev[5] * 256;      //年
    
        i = 11;
        j = 0;
        Gyrox[0].ch[0] = rev[i++]; //经度
        Gyrox[0].ch[1] = rev[i++];
        Gyrox[0].ch[2] = rev[i++];
        Gyrox[0].ch[3] = rev[i++];
        angleRT[0] = Gyrox[0].f;
    
    
        i = 15;
        j = 0;
        Gyrox[0].ch[j++] = rev[i++]; //纬度
        Gyrox[0].ch[j++] = rev[i++];
        Gyrox[0].ch[j++] = rev[i++];
        Gyrox[0].ch[j++] = rev[i++];
        angleRT[1] = Gyrox[0].f;
        i = 19;
        j = 0;
        Gyrox[0].ch[j++] = rev[i++]; //高度,m
        Gyrox[0].ch[j++] = rev[i++];
        Gyrox[0].ch[j++] = rev[i++];
        Gyrox[0].ch[j++] = rev[i++];
        angleRT[2] = Gyrox[0].f;
    
        i = 23;
        j = 0;
        Gyrox[0].ch[j++] = rev[i++]; //航向
        Gyrox[0].ch[j++] = rev[i++];
        Gyrox[0].ch[j++] = rev[i++];
        Gyrox[0].ch[j++] = rev[i++];
        angleRT[3] = Gyrox[0].f;
    
        i = 27;
        j = 0;
        Gyrox[0].ch[j++] = rev[i++]; //步数
        Gyrox[0].ch[j++] = rev[i++];
        Gyrox[0].ch[j++] = rev[i++];
        Gyrox[0].ch[j++] = rev[i++];
        angleRT[4] = Gyrox[0].f;
    
        //步幅度,低字节
        data_temp1 = rev[32] * 256 + rev[31];
        angleRT[5] = (double)data_temp1;
    
        angleRT[6] = (double)rev[33]; //卫星数
        angleRT[7] = (double)rev[34]; //状态字1
        angleRT[8] = (double)rev[35]; //状态字2
        angleRT[9] = (double)Product_ID_T; //状态字2
    
    
        angleRT[10] = (double)YearMonth;//年
        angleRT[11] = (double)rev[6];//月
        angleRT[12] = (double)rev[7];//日
        angleRT[13] = (double)rev[8];//时
        angleRT[14] = (double)rev[9];//分
        angleRT[15] = (double)rev[10];//秒
    
        return angleRT;
    
    }
    
    using namespace std;
    
    int main()
    {
        // AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF
        // 假如test = [AA 55 AD 02 BC 08 01 06 08 00 00 08 33 D6 42 F0 97 EF 41 24 18 B7 43 EF 69 56 43 00 00 50 41 A8 02 00 00 01 EF]
        unsigned char test[] = { 0xAA, 0x55, 0xAD, 0x02, 0xBC, 0x08, 0x01, 0x06, 0x08, 0x00, 0x00, 0x08, 0x33, 0xD6, 0x42, 0xF0, 0x97, 0xEF, 0x41, 0x24, 0x18, 0xB7, 0x43, 0xEF, 0x69, 0x56, 0x43, 0x00, 0x00, 0x50, 0x41, 0xA8, 0x02, 0x00, 0x00, 0x01, 0xEF };
        // cout  disp11(test)
        double* angleRT = disp11(test);
        printf("%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f\n", angleRT[0], angleRT[1], angleRT[2], angleRT[3], 
            angleRT[4], angleRT[5], angleRT[6], angleRT[7], angleRT[8], angleRT[9], angleRT[10], angleRT[11], angleRT[12], angleRT[13], angleRT[14], angleRT[15]);
        delete[] angleRT;
    
        system("pause");
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月30日
  • 已采纳回答 3月30日
  • 创建了问题 3月29日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题