메뉴 건너뛰기

조회 수 602 댓글 7

<script>
   var plots=[];
   for(var i=0;i<10;i++) {
   var plots = Math.floor(Math.random()*100);
   document.write(plots + " ");
   }
   
   document.write("<hr>");
   for(var i=0;i<10;i++){
   var big = Math.max(null, plots);
   }
   document.write("제일 큰 수는 " + big);
   document.write("<hr>");
</script>

 

난수 10개 만들고, 제일 큰수를 구하는 문제인데 이렇게 하니까 최댓값이 아니라 배열에서 출력된 가장 오른쪽에 있는 값이 나오더라고요.

어떻게 해결하는 지 알 수 있을까요?

?
  • ?
    이동연 2017.11.09 18:06
    var plots = Math.floor(Math.random()*100); 코드를 이렇게작성하면 문제에서 의도하는 1~100(100 포함) 에 어긋납니다. 아마 0~99 사이만 나올거 같은데
    var n=Math.random()*100; //0~99.9999
    var k=Math.floor(n)+1; // 1~100 정수
    이렇게 짜야 1~100 사이의 숫자가 나옵니다.
    Math.max 함수는 사용을 안해봐서 모르겠는데
    for(var i=0 ; i<plots.length ; i++)
    {
    if(big<plots[i])
    {
    big=plots[i];


    }
    }
    이런 알고리즘을 사용하면 big 에 최대값이 들어갑니다.
  • ?
    jonjsin 2017.11.09 21:44
    저대로 했는데 undifined가 나오네요. 무슨 문제일까요...
  • ?
    이동연 2017.11.10 18:17
    어떤 코드를 사용하신건가요 ??? undefined 나오는 코드를 주시면 제가 한번 볼게요!
  • ?
    jonjsin 2017.11.10 18:26
    <script>
    var plots=[];
    for(var i=0;i<10;i++) {
    var plots= Math.floor(Math.random()*100)+1;
    document.write(plots + " ");
    }
    document.write("<hr>");

    var big = plots[0];
    for(var i=0;i<10;i++){
    if(big<plots[i])
    {
    big=plots[i];
    }
    }
    document.write("제일 큰 수는 " +big);
    </script>

    이렇게 했는데 제일 큰 수는 undefined 라고 나오더라고요
  • ?
    이동연 2017.11.10 18:30
    <!DOCTYPE HTML>
    <html>
    <head>
    <title>
    난수
    </title>
    </head>
    <body>
    <h3>10개 생성</h3>
    <hr>
    <script>

    var plots= new Array(10);
    var plots1 = new Array(10);

    for(var i=0 ; i<plots.length ; i++)
    {
    var n=Math.random()*100; //0~99.9999
    var k=Math.floor(n)+1; // 1~100 정수
    plots[i]=k;
    plots1[i]=k;
    document.write(plots[i] +"<br>");
    }
    var big =plots[0]; //big에 가장 큰수저장하기
    for(var i=0 ; i<plots.length ; i++)
    {
    if(big<plots[i])
    {
    big=plots[i];
    i--;

    }
    }
    document.write("<hr>");
    document.write("가장 큰수는"+big +"<hr>");
    plots.sort(function(a,b) {
    return a-b;
    });
    for(var i=0 ; i<plots.length ; i++)
    {
    document.write(plots[i]+" ");
    }


    </script>
    </body>
    </html>

    코드이런식으로 짜시면되고
    plots.sort(function(a,b) {
    return a-b;
    });
    이 부분은 그냥 for문 사용하셔서 배열 순서 바꿔서 가장 큰 수 출력해도 좋아요 아마 math.max 사용하려면 apply 도 같이 사용해야되는거같은데 그건 잘모르겠네요 우에코드해보세요~
  • ?
    이동연 2017.11.10 18:42
    <script>
    var plots=[];
    for(var i=0;i<10;i++) {
    var plots= Math.floor(Math.random()*100)+1;
    document.write(plots + " ");
    }
    document.write("<hr>");

    var big = plots[0];
    for(var i=0;i<10;i++){
    if(big<plots[i])
    {
    big=plots[i];
    }
    }
    document.write("제일 큰 수는 " +big);
    </script>

    이코드가 잘못된것은 처음에 plots 배열을 만들었자나요 ! 우선 선언을 할때 var plots=new Array(10); 이라고 명시를 해주시는 편이 더좋습니다. 그리고
    plots는 위에서 이미 선언되어있는데 또 다시 var 이라고 선언하는건 불필요하구요 그 다음은 plots 라는 배열을 만들었는데 이제 1~100 사이의 숫자를 배열에 넣어줘야되는데 저런식으로 넣어주면 들어가지
    않습니다 그래서 for문을
    for(var i=0;i<10;i++) {
    plots[i]= Math.floor(Math.random()*100)+1;
    document.write(plots + " ");
    }
    이렇게 변경하셔야됩니다.

    그런데 그럼에도 불구하고 결과값이 나온 이유는 for문 앞에 var plots를 선언해줘서 내부 변수로 인식해서 plots는 값에 난수를 입력해주고 그 난수를 바로출력해주고 그런 행위를 10번해서 나오게 된 값입니다. 그리고 undefined 값이 나온이유는
    var big = plots[0];
    for(var i=0;i<10;i++){

    if(big<plots[i])

    {

    big=plots[i];
    i--;
    document.write(big);

    }

    한번도 plots[i] 배열값에 접근한적이없는데 접근을 할려고하니 값이 없어서 나온것입니다. 이해 안되는 부분있으면 남겨주세요
  • ?
    jonjsin 2017.11.12 00:06
    감사합니다 ㅜㅜ 왜 해결이 안됬는지 이해가 가네요 덕분에 잘 알아갑니다.

QnA

공부하면서 궁금했던 것을 질문해보세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18234
323 385p 8장 실습문제 07번 질문입니다. 1 12345 2019.08.16 616
322 코드 잘못된 부분을 봐주시면 정말 감사하겠습니다 1 file 입문한 사람 2020.04.01 607
321 timerID값이 null인 이유 1 열공이 2022.05.26 602
» 7장 실습문제 1번 질문 있습니다. 7 jonjsin 2017.11.09 602
319 저자님 367페이지 질문있습니다~~ 1 file 칼잡이최제잘 2018.02.19 591
318 6장 7번 좀 알려주세요 ㅜㅜ 1 어려워여 2020.06.14 586
317 9장 onblur onfocus 활용 실습문제 2번 웹린이 2018.05.21 568
316 4장 6번문제 물어볼려고합니다 1 배재한 2019.04.16 563
315 5장 실습문제 9번 1 file 123 2018.10.03 563
314 교과서 13장 연습문제 1 알고싶어요 2021.05.29 552
313 9장 4번 질문있습니다. 웹프로그래밍 2017.05.28 551
312 이미지를 HTML 파일과 같은 폴더에 저장하였는데 왜 이미지가 보이지 않을까요? 1 황기태 2017.03.27 546
311 바닐라js 란 것에 대해 질문이 있습니다. 2 muuum 2018.11.01 543
310 1장 test1, 2, 3 파일 2 열공중 2020.03.07 539
309 간단한 질문 드립니다. 1 뚜룹 2018.06.07 535
308 이 책을 다 본 뒤 어떤 공부를 더 하는게 좋을까요? 1 file muuum 2018.10.31 526
307 8장 실습문제 8번 질문드립니다. 3 메론 2018.11.11 525
306 명품 HTML5+ 수정판 2장 4번 문제 문의 1 file mikael 2021.04.14 518
305 HTML5+CSS3+Javascript 웹 프로그래밍[수정판] 4 file Jenny 2021.09.25 516
304 오픈 챌린지 6장 1 ㄱㄷㄱㄷ 2018.04.22 514
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로