2014年5月7日 星期三

HW5 樂透 (陣列)

1.可供使用者輸入5組樂透號碼,一組號碼有4個數字,每個數字介於0~9之間;
 -樂透號碼請用一個二維陣列儲存
 -請寫一個樂透號碼輸入函式,該函式可供輸入一組樂透號碼,主程式則呼叫該函式5次
  -輸入的4個號碼不能重覆
2.請將使用者輸入的各組號碼由小到大排序
 -請寫一個號碼排序函式,該函式可排序一組樂透號碼,主程式則呼叫該函式5次
 -排序方式,例如:原號碼7 6 5 9 排序後為 5 6 7 9
3.產生一組樂透中獎號碼
 -請寫成可產生一組樂透號碼的函式供呼叫
  -產生的4個號碼不能重覆
  -呼叫上一步驟的號碼排序函式排序
4.對獎及列印中獎情形
 -請寫一個對獎函式可供檢查一組樂透號碼是否中獎,並列印中獎情形,主程式則呼叫該函式5次
 -獎項
  -4個數字全中, 獎金10000 
  -中3個數字,獎金1000 
  -其它,無 
5.詢問是否要繼續對獎,如果是則回到步驟1繼續玩(不使用goto指令)。


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SET 5
#define SIZE 4

void EnterNumber( int a[SET][SIZE],int set,int size);
void bbsort( int a[SET][SIZE],int set,int size);
void lottery( int o[SIZE],int size);
void same0( int o[SIZE],int a[SET][SIZE],int set,int size);
void same1( int o[SIZE],int a[SET][SIZE],int set,int size);
void same2( int o[SIZE],int a[SET][SIZE],int set,int size);
void same3( int o[SIZE],int a[SET][SIZE],int set,int size);
void same4( int o[SIZE],int a[SET][SIZE],int set,int size);


int main(void)
{
int i,j;
int l[SET][SIZE]={{0}};
int o[SIZE];
int same[5]={0,1,2,3,4};

printf("請選5組4個號碼,範圍0~9,不能重複\n");

EnterNumber(l,SET,SIZE);

bbsort(l,SET,SIZE);

for( i=0;i<SET;i++){
printf("第 %d 組 :",i+1);
for( j=0;j<SIZE;j++){
printf("%3d ",l[i][j]);}
for( j=0;j<1;j++){
printf("\n");}}

lottery(o,SIZE);

printf("\n");

same0(o,l,SET,SIZE);
same1(o,l,SET,SIZE);
same2(o,l,SET,SIZE);
same3(o,l,SET,SIZE);
same4(o,l,SET,SIZE);

printf("\n");
system("pause");
return 0;
}


void EnterNumber(int a[SET][SIZE],int set,int size)
{
int i,j,k;

for( i=0;i<SET;i++){
printf("%d. ",i+1);
for(j=0;j<SIZE;j++){
scanf("%d",&a[i][j]);
if(a[i][j]>9 || a[i][j]<0){
printf("第 %d 個數字超出範圍 請重新輸入: ",j+1);
j--;}//End if

for(k=0 ; k<j; k++){                    
if(a[i][k]==a[i][j]){
printf("第 %d 個數字重複請重新輸入: ",j+1);
j--;}
}
}
}
}

void bbsort( int a[SET][SIZE],int set,int size)
{
int pass,hold,i,j;
for(i=0;i<SET;i++){
for(pass=1;pass<SIZE;pass++){
for(j=0;j<SIZE-1;j++){
if(a[i][j]>a[i][j+1]){
hold=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=hold;}
}
}
}
}

void lottery( int o[SIZE],int size)
{
int i,j,pass,hold;

srand(time(NULL));

printf("第 10224073 期 樂透開獎 :");


for(i=0;i<SIZE;i++){
o[i]=rand()%10;
for(j=0;j<i;j++){
if(o[j]==o[i]){
i--;}
}
}

for(pass=1;pass<SIZE;pass++){
for(i=0;i<SIZE-1;i++){
if(o[i]>o[i+1]){
hold=o[i];
o[i]=o[i+1];
o[i+1]=hold;}
}
}

for(i=0;i<SIZE;i++){
printf("%3d",o[i]);}
}


void same0( int o[SIZE],int a[SET][SIZE],int set,int size)
{
int i,j,k,counter=0;

for(j=0;j<SIZE;j++){
for(k=0;k<SIZE;k++){
if(a[0][j]==o[k])
++counter;
}
}
if(counter==0)
printf("第一組一個都沒中 真不簡單 \n");

if(counter==1)
printf("第一組只中1個 \n");

if(counter==2)
printf("第一組只中2個 \n");

if(counter==3)
printf("第一組中3個 獲得獎金1000元 \n");

if(counter==4)
printf("第一組居然中了4個 挖賽 WOW 獲得獎金10000元 \n");
}

void same1( int o[SIZE],int a[SET][SIZE],int set,int size)
{
int i,j,k,counter=0;

for(j=0;j<SIZE;j++){
for(k=0;k<SIZE;k++){
if(a[1][j]==o[k])
++counter;
}
}
if(counter==0)
printf("第二組一個都沒中 真不簡單 \n");

if(counter==1)
printf("第二組只中1個 \n");

if(counter==2)
printf("第二組只中2個 \n");

if(counter==3)
printf("第二組中3個 獲得獎金1000元 \n");

if(counter==4)
printf("第二組居然中了4個 挖賽 WOW 獲得獎金10000元 \n");
}

void same2( int o[SIZE],int a[SET][SIZE],int set,int size)
{
int i,j,k,counter=0;

for(j=0;j<SIZE;j++){
for(k=0;k<SIZE;k++){
if(a[2][j]==o[k])
++counter;
}
}
if(counter==0)
printf("第三組一個都沒中 真不簡單 \n");

if(counter==1)
printf("第三組只中1個 \n");

if(counter==2)
printf("第三組只中2個 \n");

if(counter==3)
printf("第三組中3個 獲得獎金1000元 \n");

if(counter==4)
printf("第三組居然中了4個 挖賽 WOW 獲得獎金10000元 \n");
}

void same3( int o[SIZE],int a[SET][SIZE],int set,int size)
{
int i,j,k,counter=0;

for(j=0;j<SIZE;j++){
for(k=0;k<SIZE;k++){
if(a[3][j]==o[k])
++counter;
}
}
if(counter==0)
printf("第四組一個都沒中 真不簡單 \n");

if(counter==1)
printf("第四組只中1個 \n");

if(counter==2)
printf("第四組只中2個 \n");

if(counter==3)
printf("第四組中3個 獲得獎金1000元 \n");

if(counter==4)
printf("第四組居然中了4個 挖賽 WOW 獲得獎金10000元 \n");
}

void same4( int o[SIZE],int a[SET][SIZE],int set,int size)
{
int i,j,k,counter=0;

for(j=0;j<SIZE;j++){
for(k=0;k<SIZE;k++){
if(a[4][j]==o[k])
++counter;
}
}
if(counter==0)
printf("第五組一個都沒中 真不簡單 \n");

if(counter==1)
printf("第五組只中1個 \n");

if(counter==2)
printf("第五組只中2個 \n");

if(counter==3)
printf("第五組中3個 獲得獎金1000元 \n");

if(counter==4)
printf("第五組居然中了4個 挖賽 WOW 獲得獎金10000元 \n");
}

沒有留言:

張貼留言