2월이 밝았다.
저번주 금요일에 다하지 못한 IncAtLeast의 해결에 들어간다.
1.
IncAtLeast(qid, getPrecodeSet, getNum) 함수가 자꾸 true를 반환한다.
하나하나 logic을 따라가보기로 한다.
single 문항은 .CODED에서 true를 반환하기에 첫번째 if문으로 들어가게 된다.
test 1. ArrayToSet 함수는 제대로 원하는 값을 반환해주는가? return 기능은 당연히 정상이었다. 그렇다면?
test 2. answerArr 로 들어가는 값? 정상. single 에서 체크된 precode의 array가 들어가고 있었다.
test 3. 내가 만든 ArrayToSet 함수가 제 값을 도출하지 않는다? 이게 신빙성 있는데, for문의 ShowAlert 가 전혀 동작하질 못하는 걸로 봐서 for문에 진입 자체를 못 하는 듯. 해결.
test 4. Set으로 변환도 잘 됐는데, 잘못된 값을 넣어도 마지막엔 true가 된다. 왜?
test 5. getNum이 1이다?
찾았다!!
마지막에 내 set과 범위로 잡아넣은 getPrecodeSet과의 교집합의 원소를 비교해서
true와 false를 결정하는 if문이 있었다.
if (answerSet.isect(getPrecodeSet).size() >= getNum)debug를 위해 저 코드 한 줄을 넣은것이 화근이었다.
ShowAlert("여기 들어오면 true!");
isTrue = true;
if (answerSet.isect(getPrecodeSet).size() >= getNum)이제 single은 해결됐고, multi 문항도 제대로 실행 되는지 확인해 봐야 했다.
{
ShowAlert("여기 들어오면 true!");
isTrue = true;
}
var newset = set("1","2","3")위와 같이 validation code를 넣고,
ShowAlert(IncAtLeast("q281", newset , 1))
var newset = set('1','2','3')이렇게 사용하게 되면 1, 2, 3의 precode중에 2개가 해당될 경우 true, 1개이거나 없으면 false를 return한다.
ShowAlert(IncAtLeast("q272", newset,2 ))
var newset = set('1','2','3')multi와 똑같이 사용하지만 결과는 다르다.
ShowAlert(IncAtLeast("q282", newset,2))
※ 꼭 필요한 ArrayToSet( )
function ClearAMulti(qid)do-while문으로 만들었다. answer list의 전체길이를 측정하는게 생각보다 복잡해서
{
var j=1;
do
{
if(f(qid)[j]==1)
f(qid)[j].set(null);
}
while (f(qid)[++j]!=null );
} // end function
function ClearASingle(qid)만들었다..고 하기에는 민망한 한줄.
{
f(qid).set(null);
}
100203 TNS Korea Internship (37/53) (0) | 2010.02.03 |
---|---|
100202 TNS Korea Internship (36/53) (0) | 2010.02.02 |
100129 TNS Korea Internship (34/53) (0) | 2010.01.29 |
100128 TNS Korea Internship (33/53) (0) | 2010.01.28 |
100127 TNS Korea Internship (32/53) (0) | 2010.01.27 |