프로그래밍

 3198, 1/160 회원가입  로그인  
   호박
   C++ 프로그래밍 질문드립니다!!

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6467 [복사]


#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main()
{
        
        int str[10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        int sum;
        int i;
        int val=0;

        srand((int)time(NULL));

        for(i=0; i<100; i++){
                sum=rand()%10;
                str[sum]++;
        }

        for(i=0; i<10; i++){
                if(str[i]>val)
                        val=i;
        }

        cout << "가장 많이 출력된 값은 !! " << val << " 입니다!" << endl;

        return 0;
}



------------------------------

위에가 제가 짠 코드구요, 이 프로그램의 목적은 0에서 9사이의 랜덤값을

100번 구해서 가장 많이 나온 숫자의 값을 출력하는 건데요,

이게 실행을 하면 대부분이 9나 8이 나오고 아주 가끔씩 7, 그 이하는

보지도 못했네요. 논리적으로 잘못된 건 없는거 같은데.. 왜 이렇게 되는걸
까요??

고수님들 조언 부탁드려요!!

  Hit : 4330     Date : 2014/06/12 04:27



    
cd80 for(i=0; i<10; i++){
if(str[i]>val)
val=i;
}
이부분에서 논리오류가 있습니다
val 은 항상 0~9사이가 되는데
str[i]는 10 이상이 될수가 있습니다
그래서 맨 마지막으로 10번 이상 나온 숫자를 출력해서 후반대가 계속나오는 것입니다
max=str[i]
val=i 이런식으로 변수를 하나 더두시면 어떨까싶네요
2014/06/12  
cd80 root@ubuntu:~# ./test
[DEBUG] str[0] = 13
[DEBUG] str[1] = 11
[DEBUG] str[2] = 16
[DEBUG] str[3] = 9
[DEBUG] str[4] = 6
[DEBUG] str[5] = 14
[DEBUG] str[6] = 8
[DEBUG] str[7] = 8
[DEBUG] str[8] = 6
[DEBUG] str[9] = 9
Number : !! 9
root@ubuntu:~#
2014/06/12  
호박 아하 이해했습니다 ㅋㅋ 그런 오류가 있었군요 감사합니다! 2014/06/12