게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
점수에 의해서 래밸을 정할려는데 노가다 코딩인가요?
게시물ID : programmer_10197짧은주소 복사하기
작성자 : 문식이당
추천 : 0
조회수 : 466회
댓글수 : 9개
등록시간 : 2015/05/18 11:40:52
옵션
  • 본인삭제금지
안녕하세요  회원 점수에 의해서 그 회원의 래밸을 정할려고 합니다.
회원 점수는 게시판 글쓰기, 출석 등등으로 올라가게 됩니다.
 
 
근데 여기서 회원 래밸이 1~100까지로 정했는데
 
 
 
1래밸 : 0~10점
2래밸 : 11~20점
3래밸 : 21~30점
.
.
.
10래밸 : 91~100점         (10씩 증가)
 
 
 
그리고 11~20래밸부터
10래밸 : 101 ~120점
11래밸 : 121 ~ 140점
12래밸 : 141 ~ 160점
13래밸 : 161 ~ 180점
.
.
20래밸 :  281 ~ 300점    (20씩 증가)
 
 
 
21~30래밸                  (30씩 증가)
21래밸 : 301 ~ 330점
22래밸 : 331 ~ 360점
 
 
 
이렇게 증가하는 공식이 있습니다. 혹시 너무 어렵게 썻는지... 걱정되네요
우선 제 머리로는 이렇게 소스를 구현 했습니다.  언어 : javascript
 
 
var score;   // 점수를 담는 변수 입니다.
 
for (var i =0; i<10; i++){
     if( (i*10) =< score && ((i+1)*10) > score){
           alert("현재 래밸은 : " + (i+1));    // 조건이 만족하면  (i+1) 값이  1~10    래밸이 된다
      }
}
 
for (var i =0; i<10; i++){
     if( (i*20)+101 =< score && ((i+1)*20)+100 > score){
           alert("현재 래밸은 : " + (i+11));    // 조건이 만족하면  (i+11) 값이  11~20    래밸이 된다
      }
}
 
for (var i =0; i<10; i++){
     if( (i*30)+301 =< score && ((i+1)*30)+300 > score){
           alert("현재 래밸은 : " + (i+21));    // 조건이 만족하면  (i+21) 값이  21~30    래밸이 된다
      }
}
 
for (var i =0; i<10; i++){
     if( (i*40)+601 =< score && ((i+1)*40)+600 > score){
           alert("현재 래밸은 : " + (i+31));    // 조건이 만족하면  (i+31) 값이  31~40    래밸이 된다
      }
}
--------------------------------------- 이런식으로 10개를 작성후 공통적인 for ( var i=0 ; i<10; i++)를 묶어
 
 
 
for (var i =0; i<10; i++){
     if( (i*10) =< score && ((i+1)*10) > score){
           alert("현재 래밸은 : " + (i+1));    // 조건이 만족하면  (i+1) 값이  1~10    래밸이 된다
      }
 
     if( (i*20)+101 =< score && ((i+1)*20)+100 > score){
           alert("현재 래밸은 : " + (i+11));    // 조건이 만족하면  (i+11) 값이  11~20    래밸이 된다
      }
 
     if( (i*30)+301 =< score && ((i+1)*30)+300 > score){
           alert("현재 래밸은 : " + (i+21));    // 조건이 만족하면  (i+21) 값이  21~30    래밸이 된다
      }
 
     if( (i*40)+601 =< score && ((i+1)*40)+600 > score){
           alert("현재 래밸은 : " + (i+31));    // 조건이 만족하면  (i+31) 값이  31~40    래밸이 된다
      }
 
.
.
.
.
.
     if( (i*100)+3501 =< score && ((i+1)*100)+3500 > score){
           alert("현재 래밸은 : " + (i+91));    // 조건이 만족하면  (i+91) 값이  91~100    래밸이 된다
      }
}
 
 
이렇게 했습니다. 음... 최대한 줄이긴 줄인건데.. 혹시 여기서 좀더 줄일수가 있을까요?
javascript지만 연산하는건 C나 C++와 비슷하다고 생각합니다.
0~9까지는 공통으로 되서 묶었고 그다음에  증가되는게  +0 , +100 , +300 , +600 , +1000, +1500 , +2100 이렇게
 
0 100  200 300 400 500 600 700 800 900 1000 씩 더하는 규칙
i * 10,  i * 20 ,  i * 30 이렇게  10*(1~10) 까지의 규칙을 생각하여
for문 안에  for문을 열어보았습니다.
 
 
 
 
var add=0;
 
for (var j =0; i<10; j++){
 
 
     for (var i =0; i<10; i++){
            if( (i*((j+1)*10))+add =< score && ((i+1)*((j+1)*10))+add > score){
                 alert("현재 래밸은 : " + ( i+ ((j*10+1)) );    // 조건이 만족하면  0~100까지 출력된다        
      }
 
       add = add + (100 * j);
}
 
 
-----------------------------------------------------------
제 머리로는 이게 한계이며 현재 사정때문에 이걸 직접 돌리지 못하니 이 조건이 맞을지도 의문이 드네요....
복잡 할지 몰르나ㅠㅠ 오유님들 조언좀 듣고 싶습니다. 과연 이렇게 돌려도 조건이 잘 될까요?
그리고 잘 된다 하면... 여기서 좀더 줄이는 방법은 없을까요?
 
조언 부탁드립니다
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호