메뉴 건너뛰기

조회 수 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 18263
243 7장 실습문제 8번에서 질문입니다 1 JAVAscript공부중이에요 2020.05.27 408
242 이벤트 관련 질문 3 왕초보 2020.05.24 125
241 예제 4-14 질문이욤 2 file 코딩딩 2020.05.17 113
240 Image 객체 2 초보 2020.05.14 126
239 76페이지 1 ramoss 2020.05.13 44
238 예제 4-11 질문합니다. 2 초보 2020.05.04 88
237 list type 질문이요 2 file 021 2020.05.03 107
236 168p 예제4-8 질문 2 file 그냥초보 2020.05.01 80
235 185쪽 질문있습니다.. 3 file ㅇㅇ 2020.04.30 62
234 css3로 웹 페이지 꾸미기 3 file ㅇㅇ 2020.04.30 109
233 예제4-5 질문드립니다. 3 초보 2020.04.27 97
232 그림이 안떠요(실습문제 4장 7번) 2 file 초보자 2020.04.27 684
231 이미지를 어떻게 나오게 하나요? 1 나나 2020.04.26 78
230 3장 실습문제 2번에 쓰이는 이미지 파일은 어디에서 받을 수 있나요? 1 dpdms0926 2020.04.22 180
229 예제 5-3 220page 2 호기심 2020.04.16 355
228 94p 그림2-4 질문 2 file 그냥초보 2020.04.15 55
227 1장 그림1-14 2 file 000 2020.04.14 119
226 4장 연습문제 8번 질문이요 4 file 코딩은코딩코딩해 2020.04.14 253
225 인터넷 익스플로러 재질문이요 2 file 021 2020.04.13 125
224 인터넷익스플로러 질문이요 1 file 021 2020.04.10 48
목록
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 21 Next
/ 21
위로