2013년 1월 29일 화요일

C언어 난수 프로그램[3完]


#include<stdio.h>
#include<string.h> //문자열
#include<time.h> //난수
#include<stdlib.h> //난수

struct guest //플레이어
{
    int player;
    char* jop;
}data[12];//총 인원수 1 ~ 11

void setup(void); //직업 초기화
void jop(int a); //직업 분류및 배정

void main()
{    
    int num; //현재 인원수
    
    while(1)
    {
        printf("현재 인원수를 입력해주세요 : ");
        scanf("%d", &num);
        if(num>11)
        {
            printf("인원수 초과 다시입력하세요.\n");
        }
        else
            break;
    }

    setup();//직업 초기화

    jop(num);//직업 분류및 배정

    //테스트
    for(int i=1 ; i<num+1 ; i++)
    {
        printf("%d플레이어는 %s 입니다.\n",data[i].player=i, data[i].jop);
        
    }
}

void setup(void) //직업 초기화
{
    for(int i=0 ; i<12 ; i++) //[1~11만 플레이어사용 (0은제외)]
    {
        data[i].player=i;
        data[i].jop="시민";
    }
}

void jop(int a) //직업 분류및 배정
{
    char *human[12]={"없쪟","시민","검시관","저격수","마피아","스파이","외계인","용병","기억상실자","경찰","경비원","경호원"};// 직업설정
    int h[12]; //직업 선택
    int p[12]; //플레이어

    //난수삽입
    srand(time(NULL)); //랜덤생성
    if(a<11)//인원 다 못채울경우
    {
        printf("원하는 직업을 골라주세요(%d).\n",a);
        printf("1.시민 2.검시관 3.저격수 4.마피아 5.스파이 6.외계인 7.용병 8.기억상실자 9.경찰 10.경비원 11.경호원\n");
        for(int i = 1 ; i < a+1; i ++)
        {
            scanf("%d", &h[i]);
            for(int j=0 ; j < i ; j++)//중복 테스트
            {
                if(h[j]==h[i])
                {
                    printf("중복되었습니다. 다시골라주세요 \n");
                    --i;
                }
            }//for문 안
        }//for문 마지막

        for(int i = 1 ; i < a+1; i ++)
        {
            p[i]=rand()%(a)+1;//플레이어 섞기 3 5 1 4 2
            for(int j=1 ; j < i ; j++)//중복 테스트
            {
                if(p[i] ==p[j])//난수 중복 생성 방지
                {
                    --i;
                }
            }//for 안
            data[p[i]].jop=human[h[i]]; //직업 결정요..
        }//for 마지막    
    }//if끝
    else if(a==11)//인원 풀인경우
    {
        for(int i = 1 ; i < 12; i ++)
        {
            p[i]=rand()%(a)+1;//플레이어 섞기 3 5 1 4 2
            for(int j=1 ; j < i ; j++)//중복 테스트
            {
                if(p[i] ==p[j])//난수 중복 생성 방지
                {
                    --i;
                }
            }//for 안
            data[p[i]].jop=human[i]; //직업 결정요..
        }//for 마지막    
    }
}

댓글 없음:

댓글 쓰기