[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 22

 

人们,帮帮我吧!

                      if(OPrazH<razH && OPrazH>0)              
                        {
                         f1=1;                                 
                         xDelH[countDH][0]=High[j];            
                         xDelH[countDH][1]=Time[j];
                         Print(xDelH[countDH][0]);
                         countDH++;
                         break;
                        }

我在写这段代码(这是一个片段),所有的变量和数组都被设置,计数器计数。最初countDH=0。但有一个问题:没有任何东西被写入xDelH数组。Print(High[j], Time[j], countDH)返回正确的结果,而xDelH[countDH][0]总是给出0的结果,通过数组大小 检查也返回0。

即使你写xDelH[countDH][0]=0.01;它仍然给出0。无论我做什么,无论我把这段代码放在哪里,它都不能发挥作用。

这可能是因为什么呢?原因是什么呢?请帮助我!

 
WindSW:

人们,帮帮我吧!

我在写这段代码(这是一个片段),所有的变量和数组都被设置,计数器计数。但是xDelH数组有一个问题,没有任何东西被写入其中。Print(High[j], Time[j], countDH)给了我正确的结果,但xDelH[countDH][0]总是返回0,通过数组大小检查也返回0。原因是什么呢?请帮助我!

即使我写xDelH[countDH][0]=0.01;它仍然产生0。

检查xDelH是否为double类型。这是否如果里面为。断点运算符 不知何故放错了位置。如果你像下面这样做,会发生什么?

double xDelH [1][1];
int countDH=0;

xDelH[countDH][0]=0.01; // точка а не запятая
Print(DoubleToStr(xDelH[countDH][0],2));
 
WindSW:

人们,帮帮我吧!

我在写这段代码(这是一个片段),所有的变量和数组都被设置,计数器计数。最初countDH=0。但有一个问题:没有任何东西被写入xDelH数组。Print(High[j], Time[j], countDH)返回正确的结果,但xDelH[countDH][0]总是给出0的结果,通过数组大小检查也返回0。

即使你写xDelH[countDH][0]=0.01;它仍然给出0。无论我做什么,无论我把这段代码放在哪里,它都不能发挥作用。

这可能是因为什么呢?原因是什么呢?请帮助我!

另一个原因可能是数组 xDelH[][]的大小 未被声明。
 
我有双倍的xDelH[][2]; if是在两个for中,其中一个经过j。你写的代码是有效的--它给出了0.01
 
WindSW:
我有双倍的xDelH[][2]; if是在两个for中,其中一个经过j。你写的代码是有效的--它输出0.01

在你的版本中,数组的大小 并没有 在维数0中指定,但在上面的例子中是这样的。

double xDelH [1][1];
 

谢谢你!这一切都在发挥作用。选择的尺寸如下。ArrayResize(xDelH,100)。

还有一个问题:如果数组填满了所有的100个单元格,例如countDH将计数到120,那么数组的大小会自动增加到120,还是我必须定期以其他方式调整数组的大小

 
WindSW:

谢谢你!这一切都在发挥作用。选择的尺寸如下。ArrayResize(xDelH,100)。

还有一个问题:如果数组填满了所有的100个单元格,例如countDH将计数到120,那么数组的大小会自动增加到120,还是我必须定期以其他方式调整数组的大小?

没有什么会自动完成。如有必要。

ArrayResize (xDelH, countDH + 1);
 
TarasBY:

没有什么会自动完成。如有必要。


谢谢你!
 

另外,你也可以一次设置更多的单元格,比如说如果你知道不会超过1000个,那么1000个。如果你在for里面填充了数组,那么在同一个for里面你定义了最大的迭代次数,在for之前你可以改变数组的大小,例如...。

double xDelH[][2];

int N=120;
ArrayResize(xDelH, N);

for (int i=0; i<=N; i++)
{
// ...
}
 
paladin80:

另外,你也可以一次设置更多的单元格,比如说如果你知道不会超过1000个,那么1000个。如果你在for里面填充了数组,那么在同一个for里面你定义了最大的迭代次数,在for之前你可以调整数组的大小,例如..:


在我的代码中,通过ArrayRange 来定义迭代次数更为方便。

为什么,如果我写xDelH[countDH][0]=HBar[countH][0];它将给出0(尽管HBar[countH][0]已经被填满,并且有自己的值)。我到底能不能做到这一点?