목차
1. 문제 정의
2. 문제 분석
3. 알고리즘
4. 소스 코드
5. 결과 화면
6. 느낀 점
2. 문제 분석
3. 알고리즘
4. 소스 코드
5. 결과 화면
6. 느낀 점
본문내용
1. 문제 정의
-3개의 무작위의 숫자를 출력한다.
-출력한 무작위의 숫자를 대응시키는 숫자와 맞춘다.
2. 문제 분석
-무작위의 숫자를 출력하는데, 난수를 출력하는 srand()와 rand()함수를
사용해야 할 것이다.
-반복할 횟수를 정확히 알기 어려우므로 for문 보다는 while문을 사용하는 것이 더 편할 것이다.
-입력하는 값은 scanf함수를 사용해서 출력되는 난수값과 같은지의 여부를
if값을 통해 확인하고, 같을 때까지 반복문을 확인하도록 해야 할 것이다.
3. 알고리즘
전체적인 흐름도
시작
Main()
각 자리 변수 지정
a1,a2,a3,b1,b2,b3
난수 출력
rand,while함수 구현
입력한 값과 대응여부 확인하기
scanf, if함수 구현
결과값 출력
printf함수 구현
다이어그램
int a1,a2,a3 :입력하는 변수값
b1,b2,b3: 난수 변수값
s,b : strike, ball
-strike,ball이 모두 0개로 구현될 수 있으므로, 초깃값을 0으로 설정하였다.
-while문에서 세 인수가 같으면 탈출 할 수 없도록 if 문 != 같다를 이용하 였다.
-두 번째 while문에서는 맞출 때까지 반복할 수 있도록 if문을 사용하였고,
난수를 지정할 때 변수값 b1,b2,b3를 다른 값으로 지정하도록 하였으므로, a1=b1이라면 a1!=b2, a1!=b3다. 고로 볼 값에 더해질 염려가 없다.
a1=b2 같은 것은 볼 값을 더하기 위한 거다.
-난수값 출력을 위한 rand(),srand()함수를 이용하였다.
내부 구현
난수 구현에 관한 것을 설명하기 위해 몇몇 함수의 설명을 가져왔다.
--------------------------------------------------------
(1) rand() 함수
컴퓨터는 난수를 생성하기 위해 시드라는 것을 이용한다.
rand 함수를 실행하면 시드에 작성된 무작위 값을 순서대로 반환한다.
같은 숫자를 대입받은 시드는 바뀌지 않고 일정하기 때문에 rand () 함수만을 사용할 경우
프로그램을 재실행 할 때마다 같은 값이 반복되서 출력된다.
(2) time() 함수
time 함수는 1970년 1월 1일 부터 지금까지의 초값을 반환한다.
time (NULL) 의 형태로 이용이 가능하다.
(3) srand() 함수
srand의 인자 값에 따라 참조 하는 시드 테이블이 바뀐다.
srand (1) 은 시드에 1이라는 숫자를 보낸다.
1을 대입 받은 시드는
수학의 함수 y = ax 에서 x의 값이 변하면 y의 값이 변하는 것과 같은 원리로
값이 조금씩 변하게 된다.
srand (100) 은 시드에 100이라는 숫자를 보낸다.
time ( NULL ) 의 값은 매 초마다 바뀌기 때문에
시간이 역행하지 않는 이상
srand ( time ( NULL ) ) 은 프로그램 실행시마다 다른 난수 테이블을 불러오게 될 것이다.
이 때 srand 의 반환 타입이 unsigned int 이기 때문에
srand ( ( unsigned ) time ( NULL ) ) 로 형변환을 해주면 좋다.
참고로 컴퓨터는 unsigned 자료형을 더 빠르게 처리하기 때문에,
양수값 밖에 나올 수 없는 변수나 함수는 unsigned 자료형을 쓰는게 좋다고 한다.
그렇다면 프로그램을 실행할 때마다 다른 난수 테이블을 사용하게 코드를 짜는 것은 해결
-3개의 무작위의 숫자를 출력한다.
-출력한 무작위의 숫자를 대응시키는 숫자와 맞춘다.
2. 문제 분석
-무작위의 숫자를 출력하는데, 난수를 출력하는 srand()와 rand()함수를
사용해야 할 것이다.
-반복할 횟수를 정확히 알기 어려우므로 for문 보다는 while문을 사용하는 것이 더 편할 것이다.
-입력하는 값은 scanf함수를 사용해서 출력되는 난수값과 같은지의 여부를
if값을 통해 확인하고, 같을 때까지 반복문을 확인하도록 해야 할 것이다.
3. 알고리즘
전체적인 흐름도
시작
Main()
각 자리 변수 지정
a1,a2,a3,b1,b2,b3
난수 출력
rand,while함수 구현
입력한 값과 대응여부 확인하기
scanf, if함수 구현
결과값 출력
printf함수 구현
다이어그램
int a1,a2,a3 :입력하는 변수값
b1,b2,b3: 난수 변수값
s,b : strike, ball
-strike,ball이 모두 0개로 구현될 수 있으므로, 초깃값을 0으로 설정하였다.
-while문에서 세 인수가 같으면 탈출 할 수 없도록 if 문 != 같다를 이용하 였다.
-두 번째 while문에서는 맞출 때까지 반복할 수 있도록 if문을 사용하였고,
난수를 지정할 때 변수값 b1,b2,b3를 다른 값으로 지정하도록 하였으므로, a1=b1이라면 a1!=b2, a1!=b3다. 고로 볼 값에 더해질 염려가 없다.
a1=b2 같은 것은 볼 값을 더하기 위한 거다.
-난수값 출력을 위한 rand(),srand()함수를 이용하였다.
내부 구현
난수 구현에 관한 것을 설명하기 위해 몇몇 함수의 설명을 가져왔다.
--------------------------------------------------------
(1) rand() 함수
컴퓨터는 난수를 생성하기 위해 시드라는 것을 이용한다.
rand 함수를 실행하면 시드에 작성된 무작위 값을 순서대로 반환한다.
같은 숫자를 대입받은 시드는 바뀌지 않고 일정하기 때문에 rand () 함수만을 사용할 경우
프로그램을 재실행 할 때마다 같은 값이 반복되서 출력된다.
(2) time() 함수
time 함수는 1970년 1월 1일 부터 지금까지의 초값을 반환한다.
time (NULL) 의 형태로 이용이 가능하다.
(3) srand() 함수
srand의 인자 값에 따라 참조 하는 시드 테이블이 바뀐다.
srand (1) 은 시드에 1이라는 숫자를 보낸다.
1을 대입 받은 시드는
수학의 함수 y = ax 에서 x의 값이 변하면 y의 값이 변하는 것과 같은 원리로
값이 조금씩 변하게 된다.
srand (100) 은 시드에 100이라는 숫자를 보낸다.
time ( NULL ) 의 값은 매 초마다 바뀌기 때문에
시간이 역행하지 않는 이상
srand ( time ( NULL ) ) 은 프로그램 실행시마다 다른 난수 테이블을 불러오게 될 것이다.
이 때 srand 의 반환 타입이 unsigned int 이기 때문에
srand ( ( unsigned ) time ( NULL ) ) 로 형변환을 해주면 좋다.
참고로 컴퓨터는 unsigned 자료형을 더 빠르게 처리하기 때문에,
양수값 밖에 나올 수 없는 변수나 함수는 unsigned 자료형을 쓰는게 좋다고 한다.
그렇다면 프로그램을 실행할 때마다 다른 난수 테이블을 사용하게 코드를 짜는 것은 해결
추천자료
점도측정 점도측정에관한실험
커패시터와 인덕터 예비실험
신호 모델에 대한 예비레포트
Laplace변환을 이용한 RLC회로해석 방법
[분석/조사] 다이오드 [공학/컴퓨터/통신]
전기공학과 기초물리학 실험
5.1 열계량
[예비]실험8. 논리회로의 간소화
민감도 분석 (선형계획법 의의)
VSEPR 모델에 의한 분자의 3차원 구조
c언어 자바(JAVA)의 변수와 자료형
[전자회로설계 실습] (결과) Inverting Amp, Non-Inverting, Summing Amp
[최신디지털공학실험] 제10판 실험08.논리 회로 간소화 만점레포트 : BCD 무효 코드 검출기 ...
소개글