Daily
C언어 - 로또 번호 생성 프로그램 만들기 [1일차]
개발 하고싶은 개발자 ・ 2022. 2. 21. 0:36
URL 복사 이웃추가
본문 기타 기능
신고하기
로또 번호 생성 프로그램 만들기
오늘의 목표
1. 잊혀졌던 C언어 문법 기억 되살리기
2. 프로그램언어 감각 되살리기
성공
배열 초기화 함수
void initialization(int *number) {int i = 0;for (i = 0; i < 6; i++) {number[i] = 0;}}
스왑 함수
void swap(int* a, int* b) {int temp = 0;temp = *a;*a = *b;*b = temp;}
배열 출력 함수(배열 합까지)
void show(int* number) {int i = 0;int sum = 0;printf("Lucky numbers is ");for (i = 0; i < 6; i++) {printf("%d ", number[i]);sum = sum + number[i];}printf("\n-------------------------\nThe sum of numbers is %d\n\n", sum);}
배열 정렬 함수 (버블 소팅)
void sort_num(int* number) {int i = 0;int j = 0;for (i = 0; i < 6; i++) {for (j = i + 1; j < 6; j++) {if (number[i] > number[j]) {swap(&number[i], &number[j]);}}}}
번호 생성 함수( 랜덤 값 생성 후 정렬, 중복 제거, 예외번호 설정 (코드 직접 입력))
void create_number(int* number) {int i = 0;int j = 0;int exception=40;int flag = 0;for (i = 0; i < 6; i++) {number[i] = rand() % 45 + 1;if (number[i] == exception) {i--;flag = 1;flag--;}// Remove duplicatesif (i > 0 && flag == 0) {for (j = i - 1; j >= 0; j--) {if (number[i] == number[j]) {i = i - 1;j = -1;}}}}sort_num(number);}
로또 번호 비교
int compare(int* a, int* b) {int i = 0;int j = 0;for (i = 0; i < 6; i++) {for (j = 0; j < 6; j++) {if (a[i] == b[j]) {return 1;}}}return 0;}
번호합 100이하, 161이상 제거
int sum_compare(int* number) {int i = 0;int sum = 0;for (i = 0; i < 6; i++) {sum = sum + number[i];}if (sum < 101 || sum > 160) {return 1;}return 0;}
메인함수
void main() {// Create variables// 'lotto_number' is a variable that contains a lottery number// 'i' is a variable for the repeat statementint last_number[5][6];int i=0;int j = 0;int flag = 0;//Initaializationfor (i = 0; i < 5; i++) {initialization(last_number[i]);}srand((unsigned)time(NULL));for (i = 0; i < 5; i++) {create_number(last_number[i]);if (sum_compare(last_number[i]) == 1) {i--;flag = 1;flag--;}else if (i > 0 && flag == 0) {for (j = i - 1; j >= 0; j--) {flag = compare(last_number[i], last_number[j]);if (flag == 1) {i = i - 1;j = -1;flag--;}}}}for (i = 0; i < 5; i++) {show(last_number[i]);}}
추가하고 싶은 것
malloc으로 동적할당
예외번호 사용자 입력
Excell 연동을 통한 역대 로또 번호 비교 제외
추첨 번호 저장
코드 전문
/*Lottery number creation programWritten by : Park jaehyeondate : 2022-02-20*/#include <stdio.h>#include <stdlib.h>#include <time.h>void initialization(int* number) {int i = 0;for (i = 0; i < 6; i++) {number[i] = 0;}}void swap(int* a, int* b) {int temp = 0;temp = *a;*a = *b;*b = temp;}void show(int* number) {int i = 0;int sum = 0;printf("Lucky numbers is ");for (i = 0; i < 6; i++) {printf("%d ", number[i]);sum = sum + number[i];}printf("\n-------------------------\nThe sum of numbers is %d\n\n", sum);}void sort_num(int* number) {int i = 0;int j = 0;for (i = 0; i < 6; i++) {for (j = i + 1; j < 6; j++) {if (number[i] > number[j]) {swap(&number[i], &number[j]);}}}}void create_number(int* number) {int i = 0;int j = 0;int exception=40;int flag = 0;for (i = 0; i < 6; i++) {number[i] = rand() % 45 + 1;if (number[i] == exception) {i--;flag = 1;flag--;}// Remove duplicatesif (i > 0 && flag == 0) {for (j = i - 1; j >= 0; j--) {if (number[i] == number[j]) {i = i - 1;j = -1;}}}}sort_num(number);}int compare(int* a, int* b) {int i = 0;int j = 0;for (i = 0; i < 6; i++) {for (j = 0; j < 6; j++) {if (a[i] == b[j]) {return 1;}}}return 0;}int sum_compare(int* number) {int i = 0;int sum = 0;for (i = 0; i < 6; i++) {sum = sum + number[i];}if (sum < 101 || sum > 160) {return 1;}return 0;}void main() {// Create variables// 'lotto_number' is a variable that contains a lottery number// 'i' is a variable for the repeat statementint last_number[5][6];int i=0;int j = 0;int flag = 0;//Initaializationfor (i = 0; i < 5; i++) {initialization(last_number[i]);}srand((unsigned)time(NULL));for (i = 0; i < 5; i++) {create_number(last_number[i]);if (sum_compare(last_number[i]) == 1) {i--;flag = 1;flag--;}else if (i > 0 && flag == 0) {for (j = i - 1; j >= 0; j--) {flag = compare(last_number[i], last_number[j]);if (flag == 1) {i = i - 1;j = -1;flag--;}}}}for (i = 0; i < 5; i++) {show(last_number[i]);}}
결과
1. 30개의 숫자 중 겹치는 숫자는 1개도 없음
2. 번호 40은 제외시켰음
3. 번호합이 101~160안에 들어오는 조합만 추출하였음.
저작자 명시 필수- 영리적 사용 불가- 내용 변경 불가
댓글쓰기 이 글에 댓글 단 블로거 열고 닫기
인쇄