javascript

javascript_배열 메서드 연습문제(점수분포표)22.04.27(day06)

양빵빵 2022. 4. 27. 16:14

 


/*
 - 학생 수를 입력 받는다 (1~80).
 - 입력 받은 학생 수 만큼 점수를 입력 받는다 (0~100).
 - 입력 받은 숫자를 점수대별로 저장한다.
 - 저장 받은 점수대별 학생의 수를 *로 출력한다.
*/


//학생 수 입력 받기
var stuNum;
while (true) {
    stuNum = +prompt(`학생 수를 입력해주세요.`);
    if (stuNum >= 1 && stuNum <= 80) {
        break;
    }
    alert('1~80 사이의 숫자를 입력하세요.');
}

alert(`${stuNum}명의 점수를 입력해주세요`);

//학생 점수 배열
var scoreList = [];
//분포 배열
var distributions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

var num = 1; //학생번호

//학생들 점수 입력받기
while (scoreList.length < stuNum) {
    var score = +prompt(`${num}번: `);

    //입력점수 검증
    if (score < 0 || score > 100) {
        alert('0 ~ 100점 사이로 입력하세요!');
        continue;
    }
    scoreList.push(score);
    num++;
}



//분포 배열 완성하기 [0,0,2,1,0,1,0,1,1,2,2]
// scoreList[0] : 23 -> distributions[2]++ -> distributions[23/10]++
// scoreList[1] : 55 -> distributions[5]++ -> distributions[55/10]++
// scoreList[2] : 100 -> distributions[10]++ -> distributions[100/10]++
// scoreList[3] : 100 -> distributions[10]++

for (var i = 0; i < scoreList.length; i++) {
    distributions[parseInt(scoreList[i] / 10)]++;
}
//[0,0,2,1,0,1,0,1,1,2,2]
// console.log(distributions);

var star = '';
for (var i = 0; i < distributions.length; i++) {

    if (i < distributions.length - 1) {
        star += `${i*10} ~ ${i*10+9} : `;
    } else {
        star += `100 : `;
    }
    for (var j = 0; j < distributions[i]; j++) {
        star += '*';
    }
    star += '\n';
}
alert(star);