[자바스크립트 연습문제] 8 풀이

이번 글은 연습문제 풀이입니다. 이전 글에서 연습문제를 풀어 보신 분들만 아래 내용을 확인하시길 바랍니다.






풀이

function checkSupplementaryClass(koreanScore, englishScore, mathScore){
  var average = (koreanScore + englishScore + mathScore)/3;
  if(average <= 50){
    console.log("보충수업 대상자입니다");
  }
}

혹은,

function checkSupplementaryClass(koreanScore, englishScore, mathScore){
  if((koreanScore + englishScore + mathScore)/3 <= 50){
    console.log("보충수업 대상자입니다");
  }
}

물론 위 함수에서 사용된 함수명(checkSupplementaryClass), 파라메터 이름들(koreanScore, englishScore, mathScore)이 달라도 상관없습니다. 어떻게 함수를 구성했든 세가지 값을 받아 평균을 구하고 평균의 값이 50이거나 작을 때 "보충수업 대상자입니다"라는 문자열을 출력하면 정답입니다.

위 함수를 만들 때 "보충수업", "국어 점수", "영어 점수" 등을 어떻게 함수명, 파라메터명으로 표현해야할지 고민이셨다면.. 개발자의 고충을 조금 이해하게 된 것입니다. 실제로 프로그래머들은 변수명, 함수명을 정하는데 많은 고민을 합니다.

댓글

T
TAEHO LEE 2020.06.21
  let kor = prompt("국어 성적 : " , '');   let eng = prompt("영어 성적 : " , '');   let math = prompt("수학 성적 : " , '');         let avg = (kor + eng + math)/3;      if(avg <= 50) {        alert("보충수업 대상자")            } else {              alert("합격");        } 이렇게 해도 되나요??
I
Ian H 2020.06.23
@TAEHO LEE,
연습문제의 8번의 포인트는 if/else의 사용법인데 해당 부분은 제대로 작성을 해주셨어요. 하지만 문제를 자세히 읽어보시면 '함수를 만들어 보세요.' 라고 되어 있는데 함수가 아닌 그냥 코드를 작성하셨어요^^;
또 prompt함수를 사용하셨는데, 이 함수는 모든 입력값을 문자열 타입으로 받습니다. 즉 국어 성적을 10, 영어 성적을 10, 수학성적을 10으로 입력하면, kor, eng, math의 값은 10(숫자)가 아니라 '10'(문자열)로 저장이 되요. 문제는 10+10+10은 30이지만, '10'+'10'+'10'은 '101010'이라는 것! 즉 '101010' <= 50은 거짓이 되어 "합격"이라는 메세지를 보게 됩니다.
prompt를 사용하셨으면 parseInt함수를 사용해서 문자열을 숫자로 바꾸어 주셔야 합니다.
  let kor = parseInt(prompt("국어 성적 : " , ''));   let eng = parseInt(prompt("영어 성적 : " , ''));   let math = parseInt(prompt("수학 성적 : " , ''));
이렇게 하면 됩니다.
if/else을 제대로 사용하셨으나, 함수로 작성하지 않으신 점(-25점), 10/10/10을 입력했을 때 '합격'이라는 잘못된 결과가 나오는 점(-25점) 하여 100점 만점에 50점 드리겠습니다^^
댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP