본문 바로가기
Front-End/JavaScript

자바스크립트 예제(5)

by newny 2023. 2. 15.
반응형

1. 성적표 만들기

5명의 학생을 대상으로 평균, 등수, 과락, 평균 10점당 * 한개씩, 장학생을 구한후 결과값을 표작성해서 id=demo에 아래와 같이 출력하시오

--------------------------------------------------------------------------
이름    국어 영어 수학 평균  등수  결과
--------------------------------------------------------------------------
라일락   100  100  100  100    1   합  격 ********** 장학생
진달래    50    55    60    55     4   불합격 *****
개나리    95    95    35    75     3   재시험 *******
무궁화    80    85    90    85     2   합  격 ********
홍길동    60    40    30    43     5   불합격 ****
--------------------------------------------------------------------------
 

[코드]

<body>
  <h3>성적 프로그램</h3>
  <div id="demo"></div>

  <script>
  const uname = ['라일락', '진달래', '개나리', '무궁화', '홍길동']
  let kor = [100, 50, 95, 80, 60]
  let eng = [100, 55, 95, 85, 40]
  let mat = [100, 60, 35, 90, 30]
  let size = uname.length


  // 평균
  const aver = [0, 0, 0, 0, 0]
  for(let i=0; i<size; i++) {
    aver[i] = Math.floor((kor[i] + eng[i] + mat[i])/3)
  }


  // 등수
  const rank = [0, 0, 0, 0, 0]
  const average = [];
  for(const value of aver) {
    average.push(value)
  }
  average.sort(function(a,b){return b - a})
  for(let i=0; i<size; i++) {
    rank[i] = average.indexOf(aver[i])+1
  }


  // 결과
  const pass = ["","","","",""]
  for(let i=0; i<size; i++) {
    // 합격, 불합격, 재시험
    if(aver[i]>=70){
      if (kor[i]>40 && eng[i]>40 && mat[i]>40) {
        pass[i] = "합격 "
      } else {
        pass[i] = "재시험 "
      }
    } else {
      pass[i] = "불합격 "  
    }

    //별찍기
    let star = ""
    for(let j=1; j<=Math.floor(aver[i]/10); j++) {
      star += "*"
    }

    //장학생
    let scholar = ""
    if (aver[i]>=95) {
      scholar = " 장학생"
    }

    pass[i] = pass[i] + star + scholar
  }

  let result = ""
  result += "<table border='1'>"
  result += "<tr>"
  result += "<th>이름</td>"
  result += "<th>국어</td>"
  result += "<th>영어</td>"
  result += "<th>수학</td>"
  result += "<th>평균</td>"
  result += "<th>등수</td>"
  result += "<th>결과</td>"
  result += "</tr>"
  for(let i=0; i<size; i++) {
    result += "<tr>"
    result += "<td>" + uname[i] + "</td>"
    result += "<td>" + kor[i] + "</td>"
    result += "<td>" + eng[i] + "</td>"
    result += "<td>" + mat[i] + "</td>"
    result += "<td>" + aver[i] + "</td>"
    result += "<td>" + rank[i] + "</td>"
    result += "<td>" + pass[i] + "</td>"
    result += "</tr>"
  }
  result += "</table>"

  document.getElementById("demo").innerHTML = result
  </script>
    
</body>

 

2. 날짜관련 문제

2-1) 서기 1년 1월 1일 부터 오늘까지의 총 날 수를 구하시오
2-2) 오늘의 요일을 출력하시오
2-3) 올해의 띠를 출력하시오


[코드]

let cYear = 2023, cMonth = 2, cDate = 15;
let sum = 0; // 서기 1년 1월 1일 부터 현재까지의 일 수

//1단계
for (let i = 1; i < cYear; i++) {
    if (i % 4 === 0 && i % 100 !== 0 || i % 400 === 0) {
        sum += 366
    } else {
        sum += 365
    }
}

//2단계
let mon = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

if (cYear % 4 === 0 && cYear % 100 !== 0 || cYear % 400 === 0) {  // 윤년 2월일 경우
    mon[2] = 29
}

for (let i = 1; i <cMonth; i++) {
    sum += mon[i]
}

//3단계
sum += cDate
document.write("서기 1년 1월 1일 부터 현재까지의 일 수: " + hap)
document.write("<hr>")

// 요일출력
switch (sum%7) {
case 1: document.write("월요일")
    break
case 2: document.write("화요일")
    break
case 3: document.write("수요일")
    break
case 4: document.write("목요일")
    break
case 5: document.write("금요일")
    break
case 6: document.write("토요일")
    break
case 0: document.write("일요일")
    break
}
document.write("<hr>")

// 띠 출력
let animal=["원숭이","닭","개","돼지","쥐","소","호랑이","토끼","용","뱀","말","양"];
document.write("올해의 띠: " + animal[cYear%12])

 

3. 함수 만들기

3-1) #기호 100개를 출력하는 함수를 만드시오

[풀이]

const test5 = function(a,b) {
    for(let i=0; i<b; i++) {
        document.write(a)
    }
}
test5("#", 100)


3-2) 팩토리얼값을 출력하는 함수를 만드시오

[풀이]

const fact = function(a) {
  let mult=1
  for(let i=a; i>=1; i--) {
    mult *= i
  }
  return mult
}
let gop = fact(4)
document.write(gop)

[다른풀이]

const fact = function (a) {
  if(a==0) {
    return 1
  } else {
    return a*fact(a-1)
  }
}


3-3) 입력한 연도가 윤년인지 평년인지 판단하는 함수를 만드시오

[풀이]

const leap = function (a) {
  if (a % 4 === 0 && a % 100 !== 0 || a % 400 === 0) {
    return true    
  } else {
    return false
  }     
}

if(leap(2023)){
  document.write('윤년')
} else {
  document.write('평년')
}

 

4. Date객체 이용하기

날짜변수 d값을 이용해서 날짜 정보를 아래와 같이 구성해서 id=clock에 출력하시오
예) 2023.02.15 (수) PM 05 : 09 : 42
[풀이]

let d = new Date()
let today=""

// 년
today += d.getFullYear() + "."

// 월
if(d.getMonth()+1<10) {
  today += "0"
}
today += d.getMonth()+1 + "."

// 일
today += d.getDate() + " "

// 요일
const day = ["일", "월", "화", "수", "목", "금", "토"]
today += "(" + day[d.getDay()] + ") "

// PM, AM
if(d.getHours()>=12) {
  today += "PM "
} else {
  today += "AM "
}

// 시
let hours = d.getHours()
if(hours>12) {
  hours -= 12
}
if(hours<10) {
  today += "0"
}
today += hours + " : "

// 분
if(d.getMinutes()<10) {
  today += "0"
}
today += d.getMinutes() + " : "

// 초
if(d.getSeconds()<10) {
  today += "0"
}
today += d.getSeconds()

document.getElementById("clock").innerText = today
반응형

'Front-End > JavaScript' 카테고리의 다른 글

JavaScript(6)-1  (2) 2023.02.16
JavaScript(5)  (0) 2023.02.15
자바스크립트 예제 (4)  (0) 2023.02.14

댓글