로또 프로그램, 어떤게 더 나은 코드인가요?
훌림목
질문 제목 : 로또 프로그램, 어떤게 더 나은 코드인가요?책에 있는 문제가 있길래 로또 프로그램을 친구랑 다른 방식으로 만들었는데요,
전 친구가 만든 코드가 왜 되는건지 이해하기가 어렵네요. 알듯하면서도 손으로 그리면서 하니.. 어려움.
그래도 일단 결과가 나오니까 제가 이해를 못할뿐이지 더 간단해보이는건 사실이라,
저보다 이게 더 나은거 같기도한데,, 이해 되신다면 설명 부탁드립니다.
## 완성은 아니고, 1~45 까지의 숫자를 srand 함수를 이용해서 6칸 배열에 집어 넣되
중복을 배제하는 과정 까지만 만들었습니다.
그리고 그 중복을 배제하는 부분에 있어서 질문 드립니다.
친구는 어떤 생각으로 했는지 모르겠구, ( 모르겠답니다 -_-)
저는 두 값을 비교해서 같은 값이면 다시 rand 하되, 다시 rand 한 값이 또 똑같을 수도 있으니까 while 로 했는데요,
그런 함수 만들고~ while 하고 하는 걸, 친구는 for문 만으로 해결해서 (멘붕(?)) + 궁금해서 올려봅니다.
ps..만드는 중이라,for문 조건이 이상해서 쓸데없는 연산이 있어서 (i가 0일때) 이상하긴 한데,
수정한다면 어떻게 수정해야할까요
질문 내용 :
친구 코드
#includestdio.h
#includestdlib.h
#includetime.h
int main(){
lottomachine();
return 0;
}
int lottomachine(){
int i,j;
int show[6];
srand(time(null));
for(i=0 ; i6 ; i++){
show[i] = rand()%45;
for(j=0 ; ji ; j++){
if(show[i]==show[j]){
i--;
break;}
}
}
for(i=0; i6; i++)
{
printf(%d , show[i]);
}
getchar();
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ이까지 친구 소스//아래는 제가 만든 코드입니다.#include stdio.h
#include stdlib.h
#include time.h
void check (int rint[]); // 중복값 검사
int main ( void )
{
int i;
int rint[6];
srand(time(null));
for(i=0; i6; i++)
{
rint[i] = rand()%45+1;
}
check(rint);
for(i=0; i6; i++)
{
printf(%d , rint[i]);
}
return 0;
}
void check (int rint[])
{
int i, j;
for(i=0; i5; i++){
for(j=1;j6;j++){
while(rint[i]==rint[j] && i!=j ) // 두 값이 같은 동안 반복 = 두 값이 달라질때까지
{
rint[j] = rand()%45+1;
p; //이제 생각해보니 j=i+1 로 하면 while에 i!=j 를 쓸 필요가 없네요.
}
}
}
-
초록이
저는 두번째 직접 만드신게 더 좋다고 생각하네요.
개인적으로 코드가 길어도 경고 뜨는 수가 더 적은게 좋다고 생각합니다^^
(원래는 코드 수가 적어야 좋은거라지만..완벽하게 작동하는게 더 좋죠/ㅎㅎ/)
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692510 | 함수형 중에서.. (6) | 한란 | 2025-04-23 |
2692483 | C언어 함수, Header | 떠나간그놈 | 2025-04-23 |
2692451 | 이 문제좀 풀어주세요 ^^ | 게자리 | 2025-04-23 |
2692424 | 2차원배열 자료입력질문이요! (1) | 똘끼 | 2025-04-22 |
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |