For 문 관련해서 반복 특성에 대해서 궁금한데요
아래 같은 수식의 for 문에서
if h>l*1.08 Then
{
TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999);
For cnt = 49 DownTo 1
{
ii[cnt] = ii[cnt-1];
}
ii[0] = Index;
if ii[1] > 0 and ii[0] >= ii[1]+5 then
{
if (ii[1] >= ii[2]+5 and ii[2] > 0) or ii[2] == 0 Then
{
StartBarIndex = ii[1];
}
Else
{
if ii[1] < ii[2]+5 and ii[2]>0 and ii[3] ==0 Then
{
startbarindex = ii[2];
}
StartBarIndex = 0;
For cnt = 1 to 49
{
if ii[cnt] >= ii[cnt+1]+5 and ii[cnt+1] > 0 Then
{
StartBarIndex = ii[cnt+1];
}
}
}
만약 cnt값이 3 일때 조건이 true 라면 거기서 for loop 이 중단되고 startbarindex 에 ii[4] 가 들어가는게 맞죠?
그런데
var1 = Index;
var2 = var1[1];
var3 = H;
value1 = 0;
Value2 = 0;
for cnt = 1 to (var1-var2)-1
{
if h[cnt] > var3 Then
{
value1 = value1 + H[cnt];
Value2 = Value2 + 1;
}
}
if Value2 >= 3 Then
value3 = value1/Value2;
Else
Value3 = 0;
이럴때는 var3 보다 큰 고가값을 찾으면 중단되는게 아니라 루프 횟수가 끝날때까지 계속 탐색을 하는데
위의 경우와 이 경우의 차이가 뭔지 헷갈립니다
***그리고 이 식에서 가장 처음 조건을 만족하는 h값은 h[1] 을 변수에 저장하면 되는데, 가장 마지막에 만족하는 h값을 찾으려면 어떻게 해야할까요??
답변 부탁드립니다
감사합니다
답변 1
예스스탁
예스스탁 답변
2025-01-03 14:36:37
안녕하세요
예스스탁입니다.
이전에 원격으로 촉박하게 작성해 드려서
for문이 멈추는 내용을 추가하지 못했습니다.
현재 무조건 for이 끝까지 수행하게 되어 있어 내용을 수정해 드립니다.
식도 좀더 간략하게 수정했습니다.주석 내용 참고하시기 바랍니다.
if h>l*1.08 Then
{
TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999);
For cnt = 49 DownTo 1
{
ii[cnt] = ii[cnt-1];
}
ii[0] = Index;
#최근 2개 지점 차이가 5개봉 이상이면 수행
#최근 2개 지점 차이가 5개봉 미만이면 계산을 안함
if ii[0] >= ii[1]+5 and ii[1] > 0 then
{
#시작인덱스는 초기값은 [1]
StartBarIndex = ii[1];
#루프수행
For cnt = 1 to 49
{
#배열에서 순차적으로 이전값 [cnt]와 [cnt+1]을 가져와
#2개지점 차이가 5개봉 미만이면 먼지점인 [cnt+1] 값을 시작봉인덱스를 저장
if ii[cnt+1] > 0 && ii[cnt] < ii[cnt+1]+5 Then
{
StartBarIndex = ii[cnt+1];
}
#먼지점인 [cnt+1] 배열저장값이 0인 배열이 나오거나 (저장된 값이 없음)
#2개지점 차이가 5개봉 이상이면
#For수행을 멈추고 빠져나감
if ii[cnt+1] == 0 or (ii[cnt+1] > 0 && ii[cnt] >= ii[cnt+1]+5) Then
{
cnt = 50;#For문의 초기값과 최종값을 받는 변수에 최종값보다 큰값지정해서 루프에서 빠져나감
}
}
}
}
즐거운 하루되세요
> yamu 님이 쓴 글입니다.
> 제목 : 질문 부탁드립니다
> For 문 관련해서 반복 특성에 대해서 궁금한데요
아래 같은 수식의 for 문에서
if h>l*1.08 Then
{
TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999);
For cnt = 49 DownTo 1
{
ii[cnt] = ii[cnt-1];
}
ii[0] = Index;
if ii[1] > 0 and ii[0] >= ii[1]+5 then
{
if (ii[1] >= ii[2]+5 and ii[2] > 0) or ii[2] == 0 Then
{
StartBarIndex = ii[1];
}
Else
{
if ii[1] < ii[2]+5 and ii[2]>0 and ii[3] ==0 Then
{
startbarindex = ii[2];
}
StartBarIndex = 0;
For cnt = 1 to 49
{
if ii[cnt] >= ii[cnt+1]+5 and ii[cnt+1] > 0 Then
{
StartBarIndex = ii[cnt+1];
}
}
}
만약 cnt값이 3 일때 조건이 true 라면 거기서 for loop 이 중단되고 startbarindex 에 ii[4] 가 들어가는게 맞죠?
그런데
var1 = Index;
var2 = var1[1];
var3 = H;
value1 = 0;
Value2 = 0;
for cnt = 1 to (var1-var2)-1
{
if h[cnt] > var3 Then
{
value1 = value1 + H[cnt];
Value2 = Value2 + 1;
}
}
if Value2 >= 3 Then
value3 = value1/Value2;
Else
Value3 = 0;
이럴때는 var3 보다 큰 고가값을 찾으면 중단되는게 아니라 루프 횟수가 끝날때까지 계속 탐색을 하는데
위의 경우와 이 경우의 차이가 뭔지 헷갈립니다
***그리고 이 식에서 가장 처음 조건을 만족하는 h값은 h[1] 을 변수에 저장하면 되는데, 가장 마지막에 만족하는 h값을 찾으려면 어떻게 해야할까요??
답변 부탁드립니다
감사합니다