메뉴 건너뛰기

조회 수 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 18278
» 7장 실습문제 1번 질문 있습니다. 7 jonjsin 2017.11.09 603
41 7장에 실습문제 4번 질문 1 asd123 2017.11.05 1634
40 몽구스 서버 외부접속 질문드립니다. 1 명품프로그래머 2017.10.26 277
39 예제 5-11을 하다 사소한 궁금한 것이 생겼습니다 1 수소방울 2017.10.13 167
38 실습문제 홀수번 정답 ㅁㅁ 2017.09.24 635
37 예제에 나오는 이미지와 동영상파일은 어디서 다운받을 수 있나요... 1 gofkdvjvl 2017.09.21 215
36 6장 실습문제 짝수 답좀 알려주실분? 제발요  도움 2017.09.18 1105
35 예제에 필요한 그림이나 동영상 같은 자료파일은? 1 donghee 2017.09.15 130
34 연습문제 8장 이론문제 2번 답을 알고 싶습니다. 1 khe 2017.08.18 814
33 7장 10번문제 1 학섕 2017.07.12 1868
32 안녕하세요 처음하는 사람입니다 교재 구입하였습니다 2 성현군 2017.06.29 330
31 07장 10번 답좀 알고싶습니다... 2 abcd 2017.06.11 1088
30 4장 8번 문제 질문드려요! 1 file safd 2017.06.09 683
29 9장 4번 질문있습니다. 웹프로그래밍 2017.05.28 551
28 9장 2번 질문있습니다. 웹프로그래밍 2017.05.28 1136
27 8장의 10번 문제 질문 있습니다. 웸프로그래밍 2017.05.28 625
26 9장 오픈챌린지 답이 너무 궁금합니다. 1 범이 2017.05.10 1253
25 오랜만에 찾아 뵙습니다.. 3 은성 2017.05.10 338
24 실습문제 7장에 8번 질문 1 abcd 2017.05.09 994
목록
Board Pagination Prev 1 ... 12 13 14 15 16 17 18 19 20 ... 21 Next
/ 21
위로