我传递的三个数字到我的程序改变的值,可以说6 2 8
我已经功能,在这些数字的间隔产生的随机数,例如指针变量
1 number = 0<= number <=6
2 number = 0<= number <=2
3 number = 0<= number <=8
我已经宣布的功能为它工作正常
double random(int a)
{
srand((unsigned int)time(NULL));
double rnd = (((double)rand()/(double)(RAND_MAX)) * a);
return rnd;
}
的话,我已经最终数目可以说10
什么,我试图做的,是随机的,前两个数字=的间隔从
1 number = 0<= number <=6
2 number = 0<= number <=2
即时通讯做它像这样
podiel_one=random(m_one);
podiel_two=random(m_two);
podiel_three= getlast(m_three,podiel_one,podiel_two,m_final,m_one,m_two);
(我扫描所述数字到变量所以m_one = 6,m_two = 2,m_three = 8,m_final = 10) ,然后我找到最终数目用简单的数学
podiel_three = m_final-(podiel_one + podiel_two)
这个工作得很好,但我要修复的情况下,当最后的数字不会是从它的间隔(0 = <数< = 8) 我有毫安德函数为其
double getlast(double m_three,double* podiel_one,double* podiel_two,double m_final,double m_one,double m_two){
double testt=(podiel_one+podiel_two);
double tmp_three=m_final-testt;
if(tmp_three>=0 && tmp_three <= m_three){
return tmp_three;
}
else{
*podiel_one=random(m_one);
*podiel_two=random(m_two);
getlast(m_three,podiel_one, podiel_two,m_final,m_one,m_two);
}
return 1;
}
这个函数如下=如果从间隔的最终数量心不是,它分配新的随机值到变量,再而做数学题,直到所述数量与时间间隔。问题是,当我尝试编译它抛出错误和警告/错误
invalid operands to binary + (have 'double *' and 'double *')
|error: incompatible type for argument 3 of 'getlast'
error: incompatible type for argument 2 of 'getlast
note: expected 'double *' but argument is of type 'double'|
作为C语言即时通讯相当新的失去了现在,我怎么能解决这个问题,使我的工作方案?
尝试,'* podiel_one + * podiel_two' –
'testt'将是增加了两个三分球的结果。将代表任意内存地址的数字加在一起基本上是无用的。 –