[11일] 성적 프로그램 풀이
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>성적프로그램풀이.html</title>
</head>
<body>
<h3>성적 프로그램</h3>
<div id="demo"></div>
<script>
//문) 5명의 학생을 대상으로 평균, 과락, 평균10점당 * 한개씩, 장학생을 구한후
// 결과값을 표작성해서 id=demo에 출력하시오
/*
출력결과
--------------------------------------------------------
이름 국어 영어 수학 평균 등수 결과
--------------------------------------------------------
라일락 100 100 100 100 1 합격 ********** 장학생
진달래 20 50 30 33 5 불합격 ***
개나리 90 95 90 91 2 합격 *********
무궁화 70 80 60 70 4 합격 *******
홍길동 35 100 100 78 3 재시험 *******
--------------------------------------------------------
*/
let 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; //5
//1) 평균 구하기
let aver=[0, 0, 0, 0, 0];
for(let i=0; i<size; i++){
aver[i]=parseInt((kor[i]+eng[i]+mat[i])/3);
} //for end
//2) 등수 구하기(평균을 기준으로)
let rank=[1, 1, 1, 1, 1];
for (let a=0; a<size; a=a+1){
for (let b=0; b<size; b=b+1){
if (aver[a]<aver[b]){
rank[a]=rank[a]+1;
} //if end
} //for end
} //for end
//3) 출력
let result=""; //결과값
result += "";
result += "<table border='1'>";
result += "<tr>";
result += " <th>이름</th>";
result += " <th>국어</th>";
result += " <th>영어</th>";
result += " <th>수학</th>";
result += " <th>평균</th>";
result += " <th>등수</th>";
result += " <th>결과</th>";
result += "</tr>";
//4) 5명의 성적을 출력하기
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>";
//5) 과락(합격, 재시험, 불합격)
if(aver[i]>=70){
if(kor[i]<40 || eng[i]<40 || mat[i]<40){
result += "재시험";
}else{
result += "합 격";
} //if end
}else{
result += "불합격";
} //if end
//6) 평균 10점당 * 한개씩
for(let star=1; star<=parseInt(aver[i]/10); star++){
result+="*";
} //for end
//7) 평균 95점 이상이면 장학생
if(aver[i]>=95){
result+= "<span style='color:red; font-weight:bold'>장학생</span>";
} //if end
result += " </td>";
result += "</tr>";
} //for end
result += "</table>";
document.getElementById("demo").innerHTML=result;
</script>
</body>
</html>
요일 구하는 프로그램
<script>
let cYear=2022, cMonth=8, cDate=10;
/*
서기 1년 1월 1일 ~ 서기 2022년 8월 10일 => 총날수
총날수 %7 => 0일 1월 2화 3수 4목 5금 6토
1)단계 -> 서기 1년 ~ 서기 2021년
평년 += 365
윤년 += 366
2)단계 1월 ~ 7월
1 3 5 7 8 10 12 += 31
4 6 9 11 += 30
2 += 29 윤년
2 += 28 평년
3)단계
+= 10
*/
let hap=0;
//1)단계
for(let y=1; y<cYear; y++){
if(y%4==0 && y%100!=0 || y%400==0){
hap=hap+366;
}else{
hap=hap+365;
} //if end
} //for end
//2)단계
let mon=[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; //1~7월을 구해야 하니 인덱스를 맞추기 위해 배열 맨 앞에 0 추가
if(cYear%4==0 && cYear%100!=0 || cYear%400==0){
mon[2]=29;
} //if end
for(let m=1; m<cMonth; m++){
hap=hap+mon[m];
} //for end
//3)단계
hap=hap+cDate;
document.write(cYear+"년" + cMonth +"월" + cDate + "일");
document.write("<hr>");
document.write("총날수 : " + hap);
document.write("<hr>");
switch(hap%7){
case 0 : document.write("일요일"); break;
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;
} //switch end
</script>
띠 구하기
// 문) 년도 cYear값의 띠를 출력하시오(12간지)
let animal = ["원숭이", "닭", "개", "돼지", "쥐", "소", "호랑이", "토끼", "용", "뱀", "말", "양"];
document.write("띠 : " + animal[cYear%12]);
로또번호
//문) 로또번호 1~45사이의 수를 서로 겹치지 않게 6개 발생시킨후,
// 오름차순으로 정렬해서 id=demo에 출력하시오
/*
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
*/
let lotto=[]; //로또번호 저장
for(let i=0; i<6; i++){
lotto[i]=parseInt(Math.random()*45)+1;
for(let j=0; j<i; j++){
if(lotto[i]==lotto[j]){ //로또번호가 중복되었는지?
i--;
break;
}//if end
}//for end
}//for end
lotto.sort(function(a, b){return a - b}); //오름차순 정렬
document.getElementById("demo").innerHTML = lotto;
/*
i=0 lotto[0]=4
j=0 0<0
i=1 lotto[1]=9
j=0 0<1 if(lotto[1]==lotto[0]) 9==4
i=2 lotto[2]=3
j=0 0<2 if(lotto[2]==lotto[0]) 3==4
j=1 1<2 if(lotto[2]==lotto[1]) 3==9
i=3 lotto[3]=9
j=0 0<3 if(lotto[3]==lotto[0]) 9==4
j=1 1<3 if(lotto[3]==lotto[1]) 9==9 i=3-1 break
*/
Date 객체
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>03_Date객체.html</title>
</head>
<body>
<h3>Date객체</h3>
현재날짜 <div id="clock"></div>
<script>
// 참조 https://www.w3schools.com/js/js_dates.asp
// Date 날짜 관련 내장 객체
const d = new Date(); //시스템의 현재 날짜 정보 가져오기
/*
document.write(d.getFullYear());
document.write("<br>");
document.write(d.getMonth());
document.write("<br>");
document.write(d.getMonth()+1);
document.write("<br>");
document.write(d.getDate());
document.write("<hr>");
document.write(d.getHours());
document.write("<br>");
document.write(d.getMinutes());
document.write("<br>");
document.write(d.getSeconds());
document.write("<hr>");
const days = ["일", "월", "화", "수", "목", "금", "토"];
document.write(days[d.getDay()]);
document.write("<hr>");
*/
//문) 날짜변수 d값을 이용해서 날짜 정보를 아래와 같이 구성해서 id=clock에 출력하시오
// 2022.08.10 (수) PM 3:05:42
let today="";
const days = ["일", "월", "화", "수", "목", "금", "토"];
today += d.getFullYear() + "."; //2022.
today += ("0"+(d.getMonth()+1)).slice(-2) + "."; //08
// if(d.getMonth()<9){
// today += "0" + (d.getMonth()+1) + ".";
// } else {
// today += d.getMonth() + ".";
// }
// if(d.getMonth()+1<10){
// today += "0";
// } //if end
// today += d.getMonth()+1 + ".";
today += ("0" + d.getDate()).slice(-2) //10
// if (d.getDate()<10) {
// today += "0" + d.getDate();
// } else {
// today += d.getDate();
// }
// if(d.getDate()<10){
// today += "0";
// } //if end
// today += d.getDate();
today += " (" + days[d.getDay()] + ")" // (수)
// switch(d.getDay()) {
// case 0 : today+=" (일) "; break;
// case 1 : today+=" (월) "; break;
// case 2 : today+=" (화) "; break;
// case 3 : today+=" (수) "; break;
// case 4 : today+=" (목) "; break;
// case 5 : today+=" (금) "; break;
// case 6 : today+=" (토) "; break;
// }
// if (d.getHours()<12) {
// today += " AM " + d.getHours() + ":";
// } else {
// today += " PM " + (d.getHours()-12) + ":"
// } 이렇게 하면 안될듯 12시 xx분인 경우 else로 가게 되는데 pm인건 맞지만 12-12가 되어 0시로 표시된다.
if(d.getHours()<12){
today += " AM ";
}else{
today += " PM ";
}//if end
if(d.getHours()<13){
today += d.getHours() + ":";
}else{
today +=d.getHours()-12 + ":";
}//if end
// if(d.getMinutes()<10) {
// today += "0" + d.getMinutes() + ":";
// } else {
// today += d.getMinutes() + ":";
// }
today += ("0" + d.getMinutes()).slice(-2) + ":";
// if(d.getSeconds()<10) {
// today += "0" + d.getSeconds();
// } else {
// today += d.getSeconds();
// }
today += ("0" + d.getSeconds()).slice(-2)
document.getElementById("clock").innerText=today;
</script>
</body>
</html>
Date 객체 날짜 세팅
<script>
// 참조 https://www.w3schools.com/js/js_date_methods_set.asp
const someday = new Date();
someday.setFullYear(1989, 5, 8); //1989년 6월 8일
document.write(someday.getFullYear());
document.write("<br>");
document.write(someday.getMonth());
document.write("<br>");
document.write(someday.getDate());
document.write("<br>");
const days = ["일", "월", "화", "수", "목", "금", "토"];
document.write(days[someday.getDay()]);
document.write("<hr>");
const d = new Date();
d.setDate(someday.getDate()+10); //someday값에서 10일 더하기 (1989년 6월 18일)
document.write(d.getDate()); //18
</script>
함수
- fuction, method
- 일정한 기능을 가지고 있다
- 함수 작정(정의), 함수 호출
- 형식 : function 함수명
- 함수는 작성(정의)하고, 그 함수를 호출함으로써 실행한다
- 예) document.write() : () 값을 웹브라우저 본문 영역(<body>)에 출력하는 함수
함수 작성시 고려사항
- 매개변수(parameter)가 있는지?
- 리턴 값(return)이 있는지?
function test1() {
document.write("KOREA");
} //test1() end
function test2() {
document.write("SEOUL");
} //test2() end
function test3(a){ //a는 매개변수(parameter)
//매개변수는 자료형이 없다
//let, var, const 사용 불가
document.write(a);
}//test3 end
//////////////////////////////////////////////
//1. 전달값이 없는 경우 (argument value)
test1(); //함수 호출
test1();
test2();
test1();
//2. 전달값이 있는 경우
test3(10);
test3(20);
test3(30);
function test4(a, b, c){
document.write(a+b+c);
} //test4 end
function test5(a, b){
for (i=0; i<b; i++) {
document.write(a);
}
} //test5 end
//전달값은 1개 이상 가능하다
test4(50, 60, 70);
test4(-3, -2, -1);
//문) #기호를 100번 출력하기
test5("#", 100);
'웹개발 교육 > JavaScript' 카테고리의 다른 글
[14일] JavaScript (8) - 이벤트, String 함수 (0) | 2022.08.12 |
---|---|
[13일] JavaScript (7) - 함수, 내장 객체, Scope, 디지털 시계 만들기 (0) | 2022.08.11 |
[11일] JavaScript (5) - 배열, 연습문제 (0) | 2022.08.09 |
[10일] JavaScript (4) - 이중 반복문, for 연습 (0) | 2022.08.08 |
[9일] JavaScript (3) - switch ~ case문, for문, break, continue, while, do ~ while (0) | 2022.08.05 |
[11일] 성적 프로그램 풀이
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>성적프로그램풀이.html</title>
</head>
<body>
<h3>성적 프로그램</h3>
<div id="demo"></div>
<script>
//문) 5명의 학생을 대상으로 평균, 과락, 평균10점당 * 한개씩, 장학생을 구한후
// 결과값을 표작성해서 id=demo에 출력하시오
/*
출력결과
--------------------------------------------------------
이름 국어 영어 수학 평균 등수 결과
--------------------------------------------------------
라일락 100 100 100 100 1 합격 ********** 장학생
진달래 20 50 30 33 5 불합격 ***
개나리 90 95 90 91 2 합격 *********
무궁화 70 80 60 70 4 합격 *******
홍길동 35 100 100 78 3 재시험 *******
--------------------------------------------------------
*/
let 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; //5
//1) 평균 구하기
let aver=[0, 0, 0, 0, 0];
for(let i=0; i<size; i++){
aver[i]=parseInt((kor[i]+eng[i]+mat[i])/3);
} //for end
//2) 등수 구하기(평균을 기준으로)
let rank=[1, 1, 1, 1, 1];
for (let a=0; a<size; a=a+1){
for (let b=0; b<size; b=b+1){
if (aver[a]<aver[b]){
rank[a]=rank[a]+1;
} //if end
} //for end
} //for end
//3) 출력
let result=""; //결과값
result += "";
result += "<table border='1'>";
result += "<tr>";
result += " <th>이름</th>";
result += " <th>국어</th>";
result += " <th>영어</th>";
result += " <th>수학</th>";
result += " <th>평균</th>";
result += " <th>등수</th>";
result += " <th>결과</th>";
result += "</tr>";
//4) 5명의 성적을 출력하기
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>";
//5) 과락(합격, 재시험, 불합격)
if(aver[i]>=70){
if(kor[i]<40 || eng[i]<40 || mat[i]<40){
result += "재시험";
}else{
result += "합 격";
} //if end
}else{
result += "불합격";
} //if end
//6) 평균 10점당 * 한개씩
for(let star=1; star<=parseInt(aver[i]/10); star++){
result+="*";
} //for end
//7) 평균 95점 이상이면 장학생
if(aver[i]>=95){
result+= "<span style='color:red; font-weight:bold'>장학생</span>";
} //if end
result += " </td>";
result += "</tr>";
} //for end
result += "</table>";
document.getElementById("demo").innerHTML=result;
</script>
</body>
</html>
요일 구하는 프로그램
<script>
let cYear=2022, cMonth=8, cDate=10;
/*
서기 1년 1월 1일 ~ 서기 2022년 8월 10일 => 총날수
총날수 %7 => 0일 1월 2화 3수 4목 5금 6토
1)단계 -> 서기 1년 ~ 서기 2021년
평년 += 365
윤년 += 366
2)단계 1월 ~ 7월
1 3 5 7 8 10 12 += 31
4 6 9 11 += 30
2 += 29 윤년
2 += 28 평년
3)단계
+= 10
*/
let hap=0;
//1)단계
for(let y=1; y<cYear; y++){
if(y%4==0 && y%100!=0 || y%400==0){
hap=hap+366;
}else{
hap=hap+365;
} //if end
} //for end
//2)단계
let mon=[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; //1~7월을 구해야 하니 인덱스를 맞추기 위해 배열 맨 앞에 0 추가
if(cYear%4==0 && cYear%100!=0 || cYear%400==0){
mon[2]=29;
} //if end
for(let m=1; m<cMonth; m++){
hap=hap+mon[m];
} //for end
//3)단계
hap=hap+cDate;
document.write(cYear+"년" + cMonth +"월" + cDate + "일");
document.write("<hr>");
document.write("총날수 : " + hap);
document.write("<hr>");
switch(hap%7){
case 0 : document.write("일요일"); break;
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;
} //switch end
</script>
띠 구하기
// 문) 년도 cYear값의 띠를 출력하시오(12간지)
let animal = ["원숭이", "닭", "개", "돼지", "쥐", "소", "호랑이", "토끼", "용", "뱀", "말", "양"];
document.write("띠 : " + animal[cYear%12]);
로또번호
//문) 로또번호 1~45사이의 수를 서로 겹치지 않게 6개 발생시킨후,
// 오름차순으로 정렬해서 id=demo에 출력하시오
/*
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
document.write(parseInt(Math.random()*45)+1);
*/
let lotto=[]; //로또번호 저장
for(let i=0; i<6; i++){
lotto[i]=parseInt(Math.random()*45)+1;
for(let j=0; j<i; j++){
if(lotto[i]==lotto[j]){ //로또번호가 중복되었는지?
i--;
break;
}//if end
}//for end
}//for end
lotto.sort(function(a, b){return a - b}); //오름차순 정렬
document.getElementById("demo").innerHTML = lotto;
/*
i=0 lotto[0]=4
j=0 0<0
i=1 lotto[1]=9
j=0 0<1 if(lotto[1]==lotto[0]) 9==4
i=2 lotto[2]=3
j=0 0<2 if(lotto[2]==lotto[0]) 3==4
j=1 1<2 if(lotto[2]==lotto[1]) 3==9
i=3 lotto[3]=9
j=0 0<3 if(lotto[3]==lotto[0]) 9==4
j=1 1<3 if(lotto[3]==lotto[1]) 9==9 i=3-1 break
*/
Date 객체
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>03_Date객체.html</title>
</head>
<body>
<h3>Date객체</h3>
현재날짜 <div id="clock"></div>
<script>
// 참조 https://www.w3schools.com/js/js_dates.asp
// Date 날짜 관련 내장 객체
const d = new Date(); //시스템의 현재 날짜 정보 가져오기
/*
document.write(d.getFullYear());
document.write("<br>");
document.write(d.getMonth());
document.write("<br>");
document.write(d.getMonth()+1);
document.write("<br>");
document.write(d.getDate());
document.write("<hr>");
document.write(d.getHours());
document.write("<br>");
document.write(d.getMinutes());
document.write("<br>");
document.write(d.getSeconds());
document.write("<hr>");
const days = ["일", "월", "화", "수", "목", "금", "토"];
document.write(days[d.getDay()]);
document.write("<hr>");
*/
//문) 날짜변수 d값을 이용해서 날짜 정보를 아래와 같이 구성해서 id=clock에 출력하시오
// 2022.08.10 (수) PM 3:05:42
let today="";
const days = ["일", "월", "화", "수", "목", "금", "토"];
today += d.getFullYear() + "."; //2022.
today += ("0"+(d.getMonth()+1)).slice(-2) + "."; //08
// if(d.getMonth()<9){
// today += "0" + (d.getMonth()+1) + ".";
// } else {
// today += d.getMonth() + ".";
// }
// if(d.getMonth()+1<10){
// today += "0";
// } //if end
// today += d.getMonth()+1 + ".";
today += ("0" + d.getDate()).slice(-2) //10
// if (d.getDate()<10) {
// today += "0" + d.getDate();
// } else {
// today += d.getDate();
// }
// if(d.getDate()<10){
// today += "0";
// } //if end
// today += d.getDate();
today += " (" + days[d.getDay()] + ")" // (수)
// switch(d.getDay()) {
// case 0 : today+=" (일) "; break;
// case 1 : today+=" (월) "; break;
// case 2 : today+=" (화) "; break;
// case 3 : today+=" (수) "; break;
// case 4 : today+=" (목) "; break;
// case 5 : today+=" (금) "; break;
// case 6 : today+=" (토) "; break;
// }
// if (d.getHours()<12) {
// today += " AM " + d.getHours() + ":";
// } else {
// today += " PM " + (d.getHours()-12) + ":"
// } 이렇게 하면 안될듯 12시 xx분인 경우 else로 가게 되는데 pm인건 맞지만 12-12가 되어 0시로 표시된다.
if(d.getHours()<12){
today += " AM ";
}else{
today += " PM ";
}//if end
if(d.getHours()<13){
today += d.getHours() + ":";
}else{
today +=d.getHours()-12 + ":";
}//if end
// if(d.getMinutes()<10) {
// today += "0" + d.getMinutes() + ":";
// } else {
// today += d.getMinutes() + ":";
// }
today += ("0" + d.getMinutes()).slice(-2) + ":";
// if(d.getSeconds()<10) {
// today += "0" + d.getSeconds();
// } else {
// today += d.getSeconds();
// }
today += ("0" + d.getSeconds()).slice(-2)
document.getElementById("clock").innerText=today;
</script>
</body>
</html>
Date 객체 날짜 세팅
<script>
// 참조 https://www.w3schools.com/js/js_date_methods_set.asp
const someday = new Date();
someday.setFullYear(1989, 5, 8); //1989년 6월 8일
document.write(someday.getFullYear());
document.write("<br>");
document.write(someday.getMonth());
document.write("<br>");
document.write(someday.getDate());
document.write("<br>");
const days = ["일", "월", "화", "수", "목", "금", "토"];
document.write(days[someday.getDay()]);
document.write("<hr>");
const d = new Date();
d.setDate(someday.getDate()+10); //someday값에서 10일 더하기 (1989년 6월 18일)
document.write(d.getDate()); //18
</script>
함수
- fuction, method
- 일정한 기능을 가지고 있다
- 함수 작정(정의), 함수 호출
- 형식 : function 함수명
- 함수는 작성(정의)하고, 그 함수를 호출함으로써 실행한다
- 예) document.write() : () 값을 웹브라우저 본문 영역(<body>)에 출력하는 함수
함수 작성시 고려사항
- 매개변수(parameter)가 있는지?
- 리턴 값(return)이 있는지?
function test1() {
document.write("KOREA");
} //test1() end
function test2() {
document.write("SEOUL");
} //test2() end
function test3(a){ //a는 매개변수(parameter)
//매개변수는 자료형이 없다
//let, var, const 사용 불가
document.write(a);
}//test3 end
//////////////////////////////////////////////
//1. 전달값이 없는 경우 (argument value)
test1(); //함수 호출
test1();
test2();
test1();
//2. 전달값이 있는 경우
test3(10);
test3(20);
test3(30);
function test4(a, b, c){
document.write(a+b+c);
} //test4 end
function test5(a, b){
for (i=0; i<b; i++) {
document.write(a);
}
} //test5 end
//전달값은 1개 이상 가능하다
test4(50, 60, 70);
test4(-3, -2, -1);
//문) #기호를 100번 출력하기
test5("#", 100);
'웹개발 교육 > JavaScript' 카테고리의 다른 글
[14일] JavaScript (8) - 이벤트, String 함수 (0) | 2022.08.12 |
---|---|
[13일] JavaScript (7) - 함수, 내장 객체, Scope, 디지털 시계 만들기 (0) | 2022.08.11 |
[11일] JavaScript (5) - 배열, 연습문제 (0) | 2022.08.09 |
[10일] JavaScript (4) - 이중 반복문, for 연습 (0) | 2022.08.08 |
[9일] JavaScript (3) - switch ~ case문, for문, break, continue, while, do ~ while (0) | 2022.08.05 |