메뉴 건너뛰기

조회 수 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 18273
283 page 46 마우스 올릴시 이미지 출력 2 file 공부중 2020.09.10 323
282 p.469 6번 질문드립니다. 4 열심히 공부하는 독자 2020.09.08 64
281 open12 질문드립니다. 3 열심히 공부하는 독자 2020.09.08 111
280 value 속성 1 열심히 공부하는 독자 2020.09.04 48
279 오타제보합니다. 1 컴퓨터공학생 2020.08.30 96
278 p.133 질문이요 1 컴퓨터공학생 2020.08.30 74
277 p.133 질문이요 1 컴퓨터공학생 2020.08.30 67
276 p.469 실습 5번문제 4 열심히 공부하는 독자 2020.08.29 92
275 브라우저 크기 변경 1 열심히 공부하는 독자 2020.08.27 59
274 9장 실습9번 문제 2 열심히 공부하는 독자 2020.08.23 106
273 Image객체 질문 4 열심히 공부하는 독자 2020.08.21 79
272 DOM트리 질문 1 열심히 공부하는 독자 2020.08.17 76
271 몽구스 웹서버가 뭔가요? 1 안녕하세요 2020.08.16 101
270 이벤트리스너 질문 2 열심히 공부하는 독자 2020.08.16 63
269 <script>태그의 위치 1 열심히 공부하는 독자 2020.08.15 58
268 open 8 질문 2 열심히 공부하는 독자 2020.08.15 62
267 p.254 3번문제 질문드립니다. 2 열심히 공부하는 독자 2020.08.14 48
266 예제 9-8 질문입니다. 2 모르겠어요 2020.07.31 101
265 예제 6-13 질문이요! 2 궁그미 2020.07.30 145
264 border style 질문 2 궁그미 2020.07.28 41
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 11 ... 21 Next
/ 21
위로