커뮤니티
아래의 두개의 결과가 다른 이유
2012-05-17 00:36:15
367
글번호 51070
1)input : P1(5),P2(20);
var : sumV1(0), sumV2(0), sumV3(0), maV1(0), maV2(0), maV3(0), count(0), count1(0);
sumV1 = 0.0;
sumV2 = 0.0;
for count = 1 to P1{
sumV1 = sumV1 + DayClose(count);
}
for count1 = 1 to P2{
sumV2 = sumV2 + DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
MessageLog(" sumv2 = %.f", sumv2);
plot1(maV1);
plot2(maV2);
2)input : P1(5),P2(20);
var : sumV1(0),maV1(0),count(0),sumV2(0), maV2(0),sumV3(0), maV3(0);
sumV1 = 0.0;
sumV2 = 0.0;
for count = 1 to P2{
if count <= P1 Then
sumV1 = sumV1 + DayClose(count);
if count <= P2 Then
sumV2 = sumV2 + DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
MessageLog(" sumv2 = %.f", sumv2);
plot1(mav1);
plot2(mav2);
1)번의 2012-5-16 sumv2 = 5238
2012-5-16 sumv2 = 5251
2012-5-16 sumv2 = 5264
.....
2)번의 2012-5-16 sumv2 = 5238
2012-5-16 sumv2 = 5291
2012-5-16 sumv2 = 5300
.....
로 서로 결과가 다릅니다. 왜일까요? 일반적인 프로그램 상으로는 결과가 같아야 합니다. 그리고 원하는 결과는 2번의 것입니다. 1)번은 day 데이타가 아니라 분 데이타를 불러오는 것 같이 20일선이 더 급격하게 움직입니다. 왜 이런 결과가 나오나요?
for 문을 분리하여 다르게 한 것뿐이 없는데, 아무래도 dayclose함수가 동작을 다르게 하는 것 같습니다.
답변 1
예스스탁 예스스탁 답변
2012-05-17 10:02:59
안녕하세요
예스스탁입니다.
for count = 1 to P1{
sumV1 = sumV1 + DayClose(count);
}
for count1 = 1 to P2{
sumV2 = sumV2 + DayClose(count);
}
1번식에서 for문에 각각 count,count1이라는 변수를 사용하셨는데
실행문에는 count변수만 사용되었습니다.
아래와 같이 수정하시면 됩니다.
for count = 1 to P1{
sumV1 = sumV1 + DayClose(count);
}
for count1 = 1 to P2{
sumV2 = sumV2 + DayClose(count1);
}
즐거운 하루되세요
> 로움 님이 쓴 글입니다.
> 제목 : 아래의 두개의 결과가 다른 이유
> 1)input : P1(5),P2(20);
var : sumV1(0), sumV2(0), sumV3(0), maV1(0), maV2(0), maV3(0), count(0), count1(0);
sumV1 = 0.0;
sumV2 = 0.0;
for count = 1 to P1{
sumV1 = sumV1 + DayClose(count);
}
for count1 = 1 to P2{
sumV2 = sumV2 + DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
MessageLog(" sumv2 = %.f", sumv2);
plot1(maV1);
plot2(maV2);
2)input : P1(5),P2(20);
var : sumV1(0),maV1(0),count(0),sumV2(0), maV2(0),sumV3(0), maV3(0);
sumV1 = 0.0;
sumV2 = 0.0;
for count = 1 to P2{
if count <= P1 Then
sumV1 = sumV1 + DayClose(count);
if count <= P2 Then
sumV2 = sumV2 + DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
MessageLog(" sumv2 = %.f", sumv2);
plot1(mav1);
plot2(mav2);
1)번의 2012-5-16 sumv2 = 5238
2012-5-16 sumv2 = 5251
2012-5-16 sumv2 = 5264
.....
2)번의 2012-5-16 sumv2 = 5238
2012-5-16 sumv2 = 5291
2012-5-16 sumv2 = 5300
.....
로 서로 결과가 다릅니다. 왜일까요? 일반적인 프로그램 상으로는 결과가 같아야 합니다. 그리고 원하는 결과는 2번의 것입니다. 1)번은 day 데이타가 아니라 분 데이타를 불러오는 것 같이 20일선이 더 급격하게 움직입니다. 왜 이런 결과가 나오나요?
for 문을 분리하여 다르게 한 것뿐이 없는데, 아무래도 dayclose함수가 동작을 다르게 하는 것 같습니다.