메뉴 건너뛰기

조회 수 603 댓글 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 18282
243 실습문제 9-7번 답안지를 보고 질문있습니다. 2 muuum 2018.10.23 300
242 6장 OPEN challenge 1 초보 2021.06.09 293
241 마우스오버기능 이용해서 플레이되는 오디오 제작중인데요 1 file 성북동뽀글이 2019.01.25 292
240 10장 예제 10-8에 오류가 있습니다. 1 file 삼오칠 2021.05.22 289
239 p.583 4번 질문드립니다. 6 열심히 공부하는 독자 2020.09.14 287
238 8장 실습문제 8번 질문이요! 4 mmii 2021.05.28 286
237 6장 실습문제 4번 질문 3 질문 2018.12.18 277
236 몽구스 서버 외부접속 질문드립니다. 1 명품프로그래머 2017.10.26 277
235 페이지에 첨부하고 싶은 이미지의 위치에대해 궁금합니다 1 정택희 2017.02.13 277
234 6장 오픈챌린지 질문 1 giggle 2020.11.23 275
233 207p 4장 실습문제 3번 질문 1 file 웹개발초보 2019.10.19 275
232 오픈챌린지 4 1 오픈 2018.04.13 275
231 오픈챌린지10번 재질문입니다. 2 이상 2019.08.30 267
230 간단한 질문입니다 1 ㅇㅇ 2018.03.04 267
229 432페이지 9장 실습문제9번 질문입니다. 1 asdf 2019.08.22 266
228 예제 2-19 1 새싹 2018.04.18 265
227 연습문제 4장 8번문제 1 file 도라에몽 2020.10.02 263
226 목록을 한줄로 나란하게 만드는 법 질문드립니다 3 file 입문한 사람 2020.04.04 261
225 실습문제 8장 3번 문제 질문입니다. 2 Joahgng 2018.12.06 261
224 몽구스 질문드립니다. 2 서동 2018.02.26 259
목록
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 21 Next
/ 21
위로