티스토리 뷰

728x90

이름, 과목 3과목 이상, 합, 평균 을 구하고 1등과 꼴찌를 구하는 이런 예제가 있다.

먼저 과목의 점수는 국어, 영어, 수학 순서대로 임의로 넣는다.

908090

1009090

100100100

 

그리고 합, 평균 메소드는 프로토타입으로 처리 (합과 평균을 계산)

ㄴ 프로토타입으로 함수를 만들어 값을 반환하게 만들면 되겠고

객체 배열 3개 이상 작성을 하고 

ㄴ 배열 3개이니 Array(3) 으로 배열을 만들고

Prompt 이름 입력 받아 객체 배열에 추가

ㄴ Prompt 로 입력 받아 객체에 만들어 놓은 변수에 배열 만큼의 반복문을 돌아서 이름을 입력 해주면 되는데

만약 이름을 입력 하지 않거나 취소를 누르면 처리를 해줘야 할거 같다.

 

배열 중 합이 최대값 객체 이름을 콘솔에 출력

ㄴ 배열을 sorting(정렬) 해서 젤 마지막에 있는 요소를 가지고 오면 되고

배열 중 합이 최소값 객체 이름을 콘솔에 출력

ㄴ 젤 첫번째 요소를 가지고 오면 

참고로 sort().reverse() 를 써서 첫번째가 1등 마지막이 꼴찌 이렇게 구현 함.

 

누군가에게는 도움이...

 

아래는 전체 소스

// 속성: 이름, 3과목 이상, 합, 평균
const CNT = 3;   // 과목수
function Haksang(k, e, m) {
    this.name;
    this.k = k;   // 국어
    this.e = e;   // 영어 
    this.m = m;   // 수학
}
// 합
Haksang.prototype.sum = function() {
    return this.k + this.e + this.m;
}
// 평균
Haksang.prototype.avg = function() {
    return this.sum() / CNT;
}

// 객체 배열 3개이상 생성 후 임의의 점수 넣기
var hsList =  new Array(3);
hsList[0] = new Haksang(90, 80, 90);
hsList[1] = new Haksang(100, 90, 90);
hsList[2] = new Haksang(100, 100, 100);

// prompt 받기 위한 반복문
for (let i=0; i<hsList.length;) {
    let cntStr = "( " + (i+1) + " / " + hsList.length + " 명 )";   // 안해도 될 듯
    let name = prompt("학생 이름을 입력 하세오 " + cntStr);
    // 예외 처리 안해도 됨(취소를 누르거나 아무것도 입력 안하거나)
    if (name == null || name == "") {
        alert("이름을 입력 해야 합니다." + cntStr + "\n" + (hsList.length-i) + " 명 남았습니다.");
        continue;
    }
    hsList[i].name = name;
    console.log(hsList[i].name + " : "+ hsList[i].sum());
    console.log(hsList[i].avg());
    i++;   // 예외 처리 때문에 밖으로 뺌
}

hsList.sort().reverse();    // 정렬 후 배열 순서 바꿈

// 첫번째 자리가 1등
console.log("1등: " + hsList[0].name);
console.log("총점: " + hsList[0].sum());

// 배열 길이의 -1 자리는 꼴찌
console.log("꽁등: " + hsList[hsList.length-1].name);
console.log("총점: " + hsList[hsList.length-1].sum());

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함