哈蛤哈 发表于 2019-6-6 19:55:32

关于数组的问题。本人小白一个。

float Judgepropensity_granularity(int a, int b, int c)
{
    float table =
    {
      {{0.0,0.0,0.0}, {0.0,0.0,0.1}, {0.1,0.1,0.2}},
      {{0.1,0.1,0.2}, {0.2,0.3,0.4}, {0.4,0.5,0.6}},
      {{0.4,0.5,0.6}, {0.5,0.6,0.7}, {0.8,0.9,1.0}},
      {{0.9,0.9,1.0}, {1.0,1.0,1.0}, {1.0,1.0,1.0}}
    };
        return table;
}


/*
    以整数代表倾向性类型
    0----保守型
    1----普通型
    2----激进型
*/
大佬们,这是一个评分表,0.1-0.3表示保守型,0.4-0.6普通型,0.7-1激进型,接下来该怎么写,用到哪方面的知识?

人造人 发表于 2019-6-6 20:07:21

说一说你这个程序想要实现什么功能?
Judgepropensity_granularity这个函数期望完成什么功能?

哈蛤哈 发表于 2019-6-6 20:12:01

人造人 发表于 2019-6-6 20:07
说一说你这个程序想要实现什么功能?
Judgepropensity_granularity这个函数期望完成什么功能?

Judgepropensity_granularity这个函数是根据前边的一些参数的的出的下边那个数组,就是评分表,然后根据分数进行分类,,大概就是这样

人造人 发表于 2019-6-6 20:39:57

哈蛤哈 发表于 2019-6-6 20:12
Judgepropensity_granularity这个函数是根据前边的一些参数的的出的下边那个数组,就是评分表,然后根据 ...

完全不知道你想要做什么,把你的代码贴完整

哈蛤哈 发表于 2019-6-6 20:42:39

人造人 发表于 2019-6-6 20:39
完全不知道你想要做什么,把你的代码贴完整

#include <stdio.h>
#include <math.h>

//全局变量定义
#define d1 0.61
#define d2 0.93
#define d3 1.4
#define d4 2.55
#define vp 1.4
#define vpMAX 2.9
#define f1=100
#define f2=115

/*
构建前方步行区域结构体
*/
struct Front
{
        float velocity;//跟随状态前方步行者步行速度
        int type;//0为跟随状态,1为非跟随状态
        int distance_range;//距离范围
        int rel_v_range;//相对速度范围
        float PPSgranularity;//倾向性粒度
}frt;

float pedestrian_velocity;//目标步行者当前速度
float Reldistance;//相对距离
float Relvelocity;//相对速度
int pedestrian_velocity_range;//目标步行者速度范围
int frequency;//非跟随状态目标步行者步频
int c1, c2, c3;
int PPStype;//倾向性类型


int JudgeVelocityRange(float a);//速度范围判断
int JudgefrequencyRange(float a);//步频范围判断
int JudgedistanceRange(float a);//距离范围判断
int JudgeRelVelocityRange(float a);//相对速度范围判断
float propensity_quantification(int a, int b, int c);//倾向性量化
void Input(void);//输入
void Judge(void);//判断
void IdentifyPropensity(void);//倾向性判断

int main()
{
    Input();
    Judge();
    IdentifyPropensity();
    return 0;
}

void Input(void)
{
    printf("目标步行者是否处于跟随状态:(0:处于跟随状态,1:处于非跟随状态)\n");
    scanf("%d",&frt.type);
    pedestrian_velocity_range = JudgeVelocityRange(pedestrian_velocity);
    if (frt.type == 0)
      {
            printf("目标步行者的步行速度为:   m/s\n");
            scanf("%f",&pedestrian_velocity);
            printf("与前方步行者的间距为:   m\n");
            scanf("%f",&Reldistance);
            printf("前方步行者的步行速度为:   m/s\n");
            scanf("%f",&frt.velocity);
      }
      else if (frt.type == 1)
      {
            printf("目标步行者的步频为   步/min\n");
            scanf("%d",&frequency);
      }

}

void Judge(void)
{
    if (frt.type == 0)
    {
      JudgedistanceRange(Reldistance);
      Relvelocity = pedestrian_velocity - frt.velocity;
      JudgeRelVelocityRange(Relvelocity);
      c1 = frt.distance_range;
      c2 = frt.rel_v_range;
      c3 = pedestrian_velocity_range;
      frt.PPSgranularity = propensity_quantification(c1, c2, c3);
    }
    else
      JudgefrequencyRange(frequency);
}

/*
        整数代表速度范围
        0----慢
        1----居中
        2----快
*/

int JudgeVelocityRange(float a)
{
        if (a < vp / 2)
                return 0;
        else if (a < (vp + vpMAX) / 2)
                return 1;
        else
                return 2;
}


/*
        以整数代表距离范围
        0----危险
        1----近
        2----中
        3----远
*/

int JudgedistanceRange(float a)
{
        float a1,a2,a3;
        a1 = (d1 + d2) / 2;
        a2 = (d2 + d3) / 2;
        a3 = (d3 + d4) / 2;
        if (Reldistance < a1)
      a = 0;
    else if (Reldistance < a2)
      a = 1;
    else if (Reldistance < a3)
      a = 2;
    else
      a = 3;
}

/*
        以整数代表相对速度范围
        0----负
        1----零
        2----正
*/

int JudgeRelVelocityRange(float a)
{
    if (a < 0)
      return 0;
    else if (a == 0)
      return 1;
    else
      return 2;
}

/*
        用3维数组存储评分表并打分
*/

float Judgepropensity_granularity(int a, int b, int c)
{
    float table =
    {
      {{0.0, 0.0, 0.0}, {0.0, 0.0, 0.1}, {0.1, 0.1, 0.2}},
      {{0.1, 0.1, 0.2}, {0.2, 0.3, 0.4}, {0.4, 0.5, 0.6}},
      {{0.4, 0.5, 0.6}, {0.5, 0.6, 0.7}, {0.8, 0.9, 1.0}},
      {{0.9, 0.9, 1.0}, {1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}}
    };
        return table;
}


/*
    以整数代表倾向性类型
    0----保守型
    1----普通型
    2----激进型
*/
void IdentifyPropensity(void)
{
   
}

哈蛤哈 发表于 2019-6-6 20:43:19

人造人 发表于 2019-6-6 20:39
完全不知道你想要做什么,把你的代码贴完整

目前就写了这些,也不知道有多少错误、。、、、、

人造人 发表于 2019-6-6 20:48:43

哈蛤哈 发表于 2019-6-6 20:43
目前就写了这些,也不知道有多少错误、。、、、、

你期望这个程序实现什么样的功能?

哈蛤哈 发表于 2019-6-6 20:55:53

人造人 发表于 2019-6-6 20:48
你期望这个程序实现什么样的功能?

根据我输入的参数,判断步行者运动的倾向性?我该怎么说{:10_266:}。。。。现在我就是不知道怎么根据数组内的评分,把分数分为三类。

哈蛤哈 发表于 2019-6-6 21:25:42

#include <stdio.h>
#include <math.h>

//全局变量定义
#define d1 0.61
#define d2 0.93
#define d3 1.4
#define d4 2.55
#define vp 1.4
#define vpMAX 2.9
#define f1 100
#define f2 115

/*
构建前方步行区域结构体
*/
struct Front
{
        float velocity;//跟随状态前方步行者步行速度
        int type;//0为跟随状态,1为非跟随状态
        int distance_range;//距离范围
        int rel_v_range;//相对速度范围
        float PPSgranularity;//倾向性粒度
}frt;

float pedestrian_velocity;//目标步行者当前速度
float Reldistance;//相对距离
float Relvelocity;//相对速度
int pedestrian_velocity_range;//目标步行者速度范围
int frequency;//非跟随状态目标步行者步频
int c1, c2, c3;
int PPStype;//倾向性类型


int JudgeVelocityRange(float a);//速度范围判断
int JudgefrequencyRange(float a);//步频范围判断
int JudgedistanceRange(float a);//距离范围判断
int JudgeRelVelocityRange(float a);//相对速度范围判断
float propensity_quantification(int a, int b, int c);//倾向性量化
void Input(void);//输入
void Judge(void);//判断
void IdentifyPropensity(void);//倾向性判断

int main()
{
    Input();
    Judge();
    IdentifyPropensity();
    return 0;
}

void Input(void)
{
    printf("目标步行者是否处于跟随状态:(0:处于跟随状态,1:处于非跟随状态)\n");
    scanf("%d",&frt.type);
    pedestrian_velocity_range = JudgeVelocityRange(pedestrian_velocity);
    if (frt.type == 0)
      {
            printf("目标步行者的步行速度为:   m/s\n");
            scanf("%f",&pedestrian_velocity);
            printf("与前方步行者的间距为:   m\n");
            scanf("%f",&Reldistance);
            printf("前方步行者的步行速度为:   m/s\n");
            scanf("%f",&frt.velocity);
      }
      else if (frt.type == 1)
      {
            printf("目标步行者的步频为   步/min\n");
            scanf("%d",&frequency);
      }

}

void Judge(void)
{
    if (frt.type == 0)
    {
      JudgedistanceRange(Reldistance);
      Relvelocity = pedestrian_velocity - frt.velocity;
      JudgeRelVelocityRange(Relvelocity);
      c1 = frt.distance_range;
      c2 = frt.rel_v_range;
      c3 = pedestrian_velocity_range;
      frt.PPSgranularity = propensity_quantification(c1, c2, c3);
    }
    else
      JudgefrequencyRange(frequency);
}

/*
        整数代表速度范围
        0----慢
        1----居中
        2----快
*/

int JudgeVelocityRange(float a)
{
        if (a < vp / 2)
                return 0;
        else if (a < (vp + vpMAX) / 2)
                return 1;
        else
                return 2;
}


/*
        以整数代表距离范围
        0----危险
        1----近
        2----中
        3----远
*/

int JudgedistanceRange(float a)
{
        float a1,a2,a3;
        a1 = (d1 + d2) / 2;
        a2 = (d2 + d3) / 2;
        a3 = (d3 + d4) / 2;
        if (Reldistance < a1)
      a = 0;
    else if (Reldistance < a2)
      a = 1;
    else if (Reldistance < a3)
      a = 2;
    else
      a = 3;
}

/*
        以整数代表相对速度范围
        0----负
        1----零
        2----正
*/

int JudgeRelVelocityRange(float a)
{
    if (a < 0)
      return 0;
    else if (a == 0)
      return 1;
    else
      return 2;
}

/*
        用3维数组存储评分表并打分
*/

float Judgepropensity_granularity(int a, int b, int c)
{
    float table =
    {
      {{0.0, 0.0, 0.0}, {0.0, 0.0, 0.1}, {0.1, 0.1, 0.2}},
      {{0.1, 0.1, 0.2}, {0.2, 0.3, 0.4}, {0.4, 0.5, 0.6}},
      {{0.4, 0.5, 0.6}, {0.5, 0.6, 0.7}, {0.8, 0.9, 1.0}},
      {{0.9, 0.9, 1.0}, {1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}}
    };
        return table;
}


int JudgefrequencyRange(float a)
{
   if (a <= f1)
   {
       printf("该步行者的运动倾向性为保守型/n");
   }
   else if (a <= f2 && a>f1)
   {
       printf("该步行者的运动倾向性为普通型/n");
   }
   else
    {
      printf ("该步行者的运动倾向性为激进型/n");
    }
}


/*
    以整数代表倾向性类型
    0----保守型
    1----普通型
    2----激进型
*/
void IdentifyPropensity(void)
{
    if (frt.PPSgranularity >= 0.1 && frt.PPSgranularity <= 0.3)
      {
            printf("该步行者的运动倾向性为保守型/n");
      }
    else if (frt.PPSgranularity >= 0.4 && frt.PPSgranularity <= 0.6)
      {
            printf("该步行者的运动倾向性为普通型/n");
      }
    else
    {
      printf ("该步行者的运动倾向性为激进型/n");
    }
}

哈蛤哈 发表于 2019-6-6 21:29:20

哈蛤哈 发表于 2019-6-6 20:55
根据我输入的参数,判断步行者运动的倾向性?我该怎么说。。。。现在我就是不知道怎么根据数组 ...

大佬,运行到84行的时候,报错undefined reference to ‘propensity_propensity_quantification’,这个可以帮助解决吗

人造人 发表于 2019-6-7 13:40:59

哈蛤哈 发表于 2019-6-6 21:29
大佬,运行到84行的时候,报错undefined reference to ‘propensity_propensity_quantification’,这个 ...

这个代码有好多问题,一两句话说不完
qq: 1440332527
页: [1]
查看完整版本: 关于数组的问题。本人小白一个。