본문 바로가기
수업노트

23.2.14(화)

by MIniLabo 2023. 2. 14.
//문1) 아래와 같이 출력하시오
            /*
                12345
                23456
                34567
                45678
                56789
            */
 
/*내가 한 것
for(a=1; a<=5; a++){
document.write(a);
for(b=a+1; b<=a+4; b++) {
    document.write(b);
}
document.write("<br>");
}*/
 
//답안
for(let a=0; a<5; a++){
    for(let b=a+1; b<=a+5; b++) {
        document.write(b);
    }
    document.write("<br>");
}
 
//문2)아래 그림과 같이 출력하시오
            /*
                @★★★
                ★@★★
                ★★@★
                ★★★@            
            */
for(let x=1; x<=4; x++){
    for(let y=1; y<=4; y++) {
        if(y==x) {
            document.write("뱅");
        }
        else {
            document.write("별");
        }
    }
    document.write("<br>");
}

 

//문3) 아래와 같이 누적의 합을 출력하시오 (회전수 증가)
/*
    1+ ... +10=55
    1+ ... +20=210
    1+ ... +30=465
   
    1+ ... +90=
    1+ ... +100=5050            
*/
let sum = 0;
for( let a = 10; a<= 100; a += 10 ){
    for( let b = 1; b <= a; b++) {
        sum = sum + b;
    }
    document.write("1+...+" + a + "=" + sum);
    document.write("<br>");
    sum=0; //다음행 sum이 0으로 시작되도록
}
 

/*
a=10
    b=1     1<=10   sum=0+1
            2<=10   sum=1+2
            ...
            10<=10  sum=45+10

a=20
    b=1     1<=20   sum=55+1  <<여기서부터 문제 발생,
                               1행의 sum값이 남아 있어 0으로 초기화해주어야 함
            2<=20   sum=56+2
*/

 

//문4) 1~100사이 중에서 짝수의 합, 홀수의 합을 각각 구하시오
/* 내가한것(연산자틀려서 고침)
let sum1 = 0;
let sum2 = 0;

for( let a = 0; a <= 100; a++ ) {
    if(a % 2 == 0) {
    sum1 = sum1 + a;
}else {
    sum2 =sum2 + a;
}
 }

 document.write("짝수합 : " + sum1+ "<br>");
 document.write("홀수합 : " + sum2);
 */
 //2. 두 개를 번갈아가며 시행하는 스위치이론
 /*
 let flag = false;
 for( let a = 1; a <= 100; a++) {
    if(flag) {
        even = even + a;
        flag = false;
    }else {
        odd = odd + a;
        flag = true;
    }
 }
 */
/*
a=1     1<=100
                if(false)
                (1은 100보다 작으므로 참인 경우인 else문 실행)
                else {flag=true}
                >>a가 1이므로 홀수인 경우에 실행되는 부분
        2<=100
                if(true) {flag=false}
                >>a가 2이므로 짝수인 경우에 실행되는 부분
        3<=100
                if(false)
                else{flag=true}
*/
 

//문5) 다음식의 결과를 구하시오  
            //    1 - 2 + 3 - 4 + 5 ... -100 = ?
/*
let even = 0;
let odd = 0;
let sum = even + odd;
for( let a = 1 ; a <= 100; a++){
    if(a % 2 == 0) {
        even = even - a
       
    }else{
        odd = odd + a
       
    }
    document.write("짝수합 : " + even + "<br>");
    document.write("홀수합 : " + odd + "<br>");
    document.write("<hr>");
}
//document.write("합 : " + sum);
*/

//2) 스위치이론 반영
let hap = 0;
flag = false;
for(let a =1 ; a<=100; a++) {
    if(flag){
        hap = hap-a;
        flag=false;
    }else{
        hap = hap+a;
        flag=true;
    }
}
document.write("1 - 2 + 3 - 4 + 5 ... -100 = " + hap);
document.write("<hr>");

 

 

o 배열

// 참조 https://www.w3schools.com/js/js_arrays.asp

    let kor=[]; //배열선언
    kor[0]=10; //배열 요소의 인덱스는 0부터 시작
    kor[1]=20; //배열 요소의 인덱스는 1씩 증가
    kor[2]=30;
 
 
//배열선언 및 초기값
let points=[40, 100, 25, 3, 7];

document.write(points.length);// 배열 요소의 개수 5
document.write("<hr>");
 
* 배열 요소의 확인법
1) document.write(points); //배열 요소의 전체값 반환

2) for(let i = 0; i<points.length; i++) {
    document.write(points[i]);
}//반복문 통한 배열 요소 전체 확인
 
3)
for( i in points  ) { //뒤 변수 값을 하나씩 앞 변수에 넣음
    document.write(points[i]);
 
 
 
 
 
 ===========================
 
o 배열연습문제
   let num = [7, 8, -9, 5, 6];
    let size=num.length;

    document.write(num);
    document.write("<hr>");
----------------------------------------------------------

//문1)배열 요소의 전체 합을 구하시오
/*방법2=내가한것
document.write("배열 요소의 전체 합");
for(let a = 0; a < size ; a++) {
    let sum= 0 ;
    sum = sum + num[a];
}
document.write(sum);
document.write("<hr>");
*/
//방법1
document.write(num[0]+num[1]+num[2]+num[3]+num[4]);
document.write("<hr>");

//방법3 for ( in )사용
let sum = 0;
for( a in num ) {
    sum = sum + num[a];
}
document.write(sum);
document.write("<hr>");
 
///////////////////////////////////////////////////////////////////////////////////////////////////////

//문2)음수의 개수를 구하시오
document.write("음수의 개수");
let minnum = 0;
for(let a = 0 ; a < size ; a++ ){
    if(num[a] < 0) {
    minnum++;
}
}
document.write(minnum);

document.write("<hr>");
//////////////////////////////////////////////////////////////////////////////////////////////
 
//문3)최대값, 최소값을 각각 구하시오

//방법1 내림차순 정렬 활용
/*
num.sort(function(a, b){return b - a});//8,7,6,5,-9
document.write(num[0]);             //최댓값
document.write("<hr>");
document.write(num[size-1]);        //최솟값
document.write("<hr>");
*/


//방법2 안됨 NaN으로 출력, Math.max()에는 배열을 통으로 넣으면 안됨
/*
document.write(Math.max(num));
document.write("<hr>");
document.write(Math.min(num));
document.write("<hr>");
*/

//방법3 두 값을 비교해 큰 놈(작은놈)이 맥스(민)자리를 차지하는 알고리즘
let max = num[0]; //최댓값
let min = num[0]; //최솟값

/*
    7<7             if(max<num[0])
    7<8 max=8       if(max<num[1])  max=num[1]
    8<-9            if(max<num[2])
    8<9             if(max<num[3])  max=num[3]
    8<6             if(max<num[4])
*/
for( i = 0 ; i < size ; i++ ) {
    if(max < num[i]) {
        max=num[i];
    }

    if(min>num[i]) {
        min=num[i];
    }
}
document.write("최대값" + max);
document.write("<hr>");
document.write("최소값" + min);
document.write("<hr>");

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//문4)num[4]요소의 등수를 구하시오

/*
6<7     if(num[4]<num[0]) r=1+1
6<8     if(num[4]<num[1]) r=2+1
6<-5    if(num[4]<num[2])
6<9     if(num[4]<num[3]) r=3+1
6<6     if(num[4]<num[4])
*/
 
//구하려는 요소를 1등으로 놓고 거기에 밀려난 횟수 더하기
 let r = 1;
 for(let i = 0 ; i < size ; i++ ){
    if(num[4] < num [i]) {
        r++;
    }
 }

'수업노트' 카테고리의 다른 글

23.2.16(목)  (0) 2023.02.16
23.2.15(수)  (0) 2023.02.16
23.2.13 (월)  (0) 2023.02.13
23.2.9 (목)  (0) 2023.02.09
23.2.8(수)  (0) 2023.02.08