[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 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가 이중인지 확인하십시오. for 내부에 있는 경우입니다. break 문 이 어떻게 든 올바르게 배치되지 않았습니다. 그리고 아래와 같이 하면 어떻게 될까요?

 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 이상은 그렇지 않을 것입니다. 내부에 배열을 채우면 최대 반복 횟수를 정의하고 이전에 배열의 크기를 변경할 수 있습니다. 예를 들면 다음과 같습니다.

 double xDelH[][ 2 ];

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

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

예를 들어 옵션으로 더 많은 셀을 즉시 지정할 수 있습니다. 1000을 알면 1000 이상은 그렇지 않을 것입니다. 내부에 배열을 채우면 최대 반복 횟수를 정의하고 이전에 배열의 크기를 변경할 수 있습니다. 예를 들면 다음과 같습니다.


코드에서 ArrayRange 를 사용하여 반복 횟수를 결정하는 것이 더 편리합니다.

그리고 xDelH[countDH][0]=HBar[countH][0]; , 그러면 0이 반환됩니다(HBar[countH][0]은 이미 채워져 있고 고유한 값을 가집니다). 전혀 그렇게 할 수 있습니까?