PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2012/04/16 23:43:04
Name 心Criterion
Subject c언어 질문 다시 드립니다~
void report2()
//숫자 5개씩 a와 b를 랜덤 입력
//각 a와 b의 각각의 수를 3개씩 조합해서 1의 자리 수가 9에 가까운 수가 이김
{
         int a[5],i;
         int b[5],j;
         for(i=0;i<5;i++)
                 a[i]=rand()%10+1;
         for(j=0;j<5;j++)
                 b[j]=rand()%10+1;
         for(;;)
                 for(;;)
                         for(;;)

}

a[5],b[5]에랜덤하게 숫자 5개를 생성한다음에 각각 3개를 1의 자리 숫자가 9에 최대한 가깝게 더한 후에
a와b를 비교해서 이기는 변수를 찾으면 되는건데
5개의 변수를 생성하는것 까지는 제시가 되었는데 나머지 이하 밑의 식을 생각해도 잘 모르겠네요
5개 중에 3개를 뽑고 그 다음에 3개를 더하고 a,b를 비교하고 이렇게 말은 쉬운데
막상 컴퓨터에 앉으니 힘드네요
어떻게 식을 만들어야 하는지 조언 좀 부탁드려요 고수님들!
////////////////////////////////////////////////////////

위에 처럼 처음 질문을 했는데

1) 5개 중에 3개를 뽑는 방법
난수 발생시켜서(rand()) 그 값을 mod(5) 하면 범위가 0~4로 좁혀질겁니다. a[0]~a[4]까지 중에서 임의대로 고를 수 있겠죠?
물론, 난수가 동일하게 발생할 수 있으므로(1회차 1, 2회차 1 이런식으로...) 조건 연산자를 넣어줘서 동일할 경우 다시 rand()함수를 호출하면 되겠습니다.

스타나라님 답변인데

제가 위에올린 식으로 a[0], a[1]], a[2]], a[3]], a[4]
이렇게 0~9까진가 1~9까지의 값이 5개의 값이 랜덤하게 정해질텐데 여기서 최대한 9의 가깝게 3개를 더할 수 있는 방법이 이해가 안됩니다
나머지 답변들은 이해가 가는데 말이죠
혹시 조금만 자세히 설명해주실수 있을까요
코드로 설명해주시면 더 좋구요

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
콩쥐팥쥐
12/04/16 23:51
수정 아이콘
간단하죠. 5개 중 3개면 총 가지수가 10가지니, 이걸 다 계산 해 보고 이 중 가장 일의 자리 수가 9와 가까운 것을 찾으면 되죠.
콩쥐팥쥐
12/04/16 23:52
수정 아이콘
a[0], a[1], a[2] 부터 a[2]. a[3], a[4] 까지요.
스타나라
12/04/16 23:52
수정 아이콘
1) 이렇게 0~9까진가 1~9까지의 값이 5개의 값이 랜덤하게 정해질텐데..............
mod(10)을 하시면(=%10을 하시면) 그 결과값은 0~9 사이에 있게 됩니다. 나눗셈의 나머지가 갖는 성질이죠. 10으로 나누기때문에 10보다 큰 수는 결과값으로 나오지 않습니다. 하지만, 최초에 재시해 주신 식에는 rand()%10 "+1"이 되어있습니다. 즉, 0~9까지의 값을 갖는 결과가 1~10 까지의 값을 갖게 되는것이죠.

결국 rand() 함수를 이용해 첫번째와 두번째 for문에서 생성되는 값의 범위는 1~10 입니다.

2) 여기서 최대한 9의 가깝게 3개를 더할 수 있는 방법이 이해가 안됩니다
제가 이해한 바는 이렇습니다. 1부터 10까지의 숫자가 무작위로 선출되어 배열 5개에 각각 저장된다. 한가지 배열에서 또다시 무작위로 3가지 숫자를 뽑아내며, 해당 숫자의 조합을 통해 "1의자리가" 9에 가까운 수가 승리한다. 여기에서 조합은 부연설명에 언급하신 "덧셈"을 이용했구요.
예를들어 a[] =
1, 3, 5, 7, 9
라고 합시다.
a[3], a[4], a[5]가 무작위로 뽑힌다면 조합의 결과는(=덧셈의 결과는) 5+7+9 = 21이 될 것이고, 1의 자리만취하면 그 결과값이 1이 될겁니다. 최초의 덧셈결과 21에서 1의자리만 취하기 위해 %10을 하는 거구요.
스타나라
12/04/16 23:56
수정 아이콘
콩쥐팥쥐님의 리플을 보고나니...5개의 배열값을 가지고 어떻게는 3가지를 조합해서 최대한 9에 가깝게 결과를 도출해 내는거라면...제 설명이 잘못된 방향일 수도 있겠구나...싶습니다.

5개의 배열값에서 모든 경우의 수를 따져서 1의자리 숫자의 덧셈 결과를 찾아 최대한 9에 가깝게 만드려면 구구단을 찍어내는것과 동일한 방법으로 for문을 돌려보시면 됩니다. for문의 연속으로 나오는 결과값을 일일이 비교해서 9에 가장 가까운 값을 찾아내면 되는거구요.
心Criterion
12/04/17 00:50
수정 아이콘
콩쥐팥쥐님// 스타나라님//
답변 감사하구요
3가지가 무작위로 뽑히는건 for문을 이용하면 되는건가요?
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
132224 만화 제목 질문합니다 RookieKid1312 12/04/17 1312
132223 혹시 [NC]...tester님의 블로그 주소 아시는 분 계신가요? [3] TheCube1849 12/04/17 1849
132222 TED, 지식채널 e, 테크플러스 질문 Wizard_Slayer1239 12/04/17 1239
132221 [lol]아이템 질문입니다. [8] 요우1567 12/04/17 1567
132220 [LOL]와딩 위치 및 챔피언 관련 질문 [12] 카스2169 12/04/17 2169
132219 아이폰4 액정수리 관련 질문입니다. [6] 바닥인생1767 12/04/17 1767
132218 고전 게임 관련 질문드립니다 [4] mangyg1555 12/04/17 1555
132217 영어고수님들께 질문 몇개만 부탁드립니다 (문법과 해석) [5] TOMATO~1284 12/04/17 1284
132216 노트북 리튬폴리머 배터리 관련 [2] 연필깎이2360 12/04/17 2360
132215 친구가 제 닉네임을 알아낼거 같아요 [33] 스타베리2269 12/04/17 2269
132214 베스파 렌트할 수 있나요? 오뱅2122 12/04/17 2122
132213 윈앰프 질문드립니다 [2] KOO1243 12/04/17 1243
132212 [정신과] 해박하신 분들의 조언을 구하고자 합니다. [7] 평균APM5142112 12/04/17 2112
132211 한국어를 잘 한다는것? [6] 복제자1554 12/04/17 1554
132210 예비군을 앞당길 수 있나요? [4] 프리템포1818 12/04/17 1818
132208 외국인이 이정도 글을 읽고 유머를 이해하려면..... [8] 다음세기1832 12/04/17 1832
132207 부산에 야구구단이 하나 더 생긴다면...?! [5] 냉면과열무1556 12/04/17 1556
132205 c언어 질문 다시 드립니다~ [7] 心Criterion1560 12/04/16 1560
132204 KT 요금이 이따위로 나올수 있나요? [7] 가양역턱돌신1896 12/04/16 1896
132203 한글 윈도우즈 98 구할 수 있는 곳 없을까요 VKRKO 1282 12/04/16 1282
132202 TV 와 TV겸용 모니터의 차이?? [3] 프링글스5471 12/04/16 5471
132201 이번 선거 결과에 대해 투표수에 관해 여쭤봅니다 틀림과 다름1263 12/04/16 1263
132200 묘비명을 뭐라고 남기고 싶으신가요? [30] 영혼1683 12/04/16 1683
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로