while 문공부하다가 알람 어플중에 가끔 산수문제로 잠깨는지 확인하는거 생각나서 자바스크립트 while 문으로 만들어봄.
20 이하의 양의정수를 임의로 만들어 퀴즈
var count = 0; var a = Math.floor(Math.random()*20); var b = Math.floor(Math.random()*20); while(true){ var ans = prompt(a+"+"+b+"의 답을 입력해 주세요"); if(ans != a+b){ document.write('답이 틀렸어용. 다시 도전하세요.'+(++count)+"번 틀림"); continue; } ans = prompt(a+"x"+b+"의 답을 입력해 주세요"); if(ans != a*b){ document.write('답이 틀렸어용. 다시 도전하세요.'+(++count)+"번 틀림"); continue; } ans = prompt(a+"-"+b+"의 답을 입력해 주세요"); if(ans != a-b){ document.write('답이 틀렸어용. 다시 도전하세요.'+(++count)+"번 틀림"); continue; } break; } document.write("축하합니다. 통과~!");
근디 똑같은 애들이 중복되서 너무 길다.
배열을 이용해서 아래와 같이 만들면 짧아지는데, 좋은 코드같진 않다.
var count = 0; var a = Math.floor(Math.random()*20); var b = Math.floor(Math.random()*20); var cal_num = [a+b,a*b,a-b]; var cal_str = ['+','*','-']; var i = 0; while(true){ var ans = prompt(a+ cal_str[i] +b+"의 답을 입력해 주세요"); if(ans != cal_num[i]){ i = 0; document.write('답이 틀렸어용. 다시 도전하세요.'+(++count)+"번 틀림<br>"); continue; } i++; if(i==3){ break; } } document.write("축하합니다. 통과~!");
string 으로 된 +,- 같은 연산 기호를 연산자로 변환할 수 있는 방법을 알면 더 좋을거 같은데, 물어봐야겠다.
아무래도 while 보단 for 가 보기도 좋고 쉬운거 같다.