게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
구조체 배열로 카드생성 셔플 질문..
게시물ID : programmer_16545짧은주소 복사하기
작성자 : 베오베감이다
추천 : 0
조회수 : 421회
댓글수 : 1개
등록시간 : 2016/04/05 23:20:59
안녕하세요

구조체 배열을 선언하여 카드를 생성하고 셔플하고 화면에 출력하는 프로그램을 생성중인데

저혼자 고민해서 해결이 될듯한 문제가 아닌듯한지라..

질문좀 드릴까 합니다.

SettingCard 함수부분에서 뭔가 런타임 에러가 납니다..

원인도 모르겠고 셋팅카드 함수부분만 지웠을때 문제없는데

세팅카드가 메인함수 내에 들어가면 런타임 에러를 띄웁니다.

왜그럴까요..ㅠ?

#include <iostream>
#include <time.h>
#include <Windows.h>

using namespace std;

typedef struct Card
{
    int card[52];
int shape[3];
int number[3];
}CARD;

void CreateCard(CARD* card);  // 52장의 카드 배열을 초기화 해준다.
void ShuffleCard(CARD* card); // 카드를 섞어준다.
void SettingCard(CARD* card); // 카드를 세팅한다
void ShowCard(CARD* card);   // 카드를 출력한다.

int main(void)
{
srand(time(NULL));

CARD card;

CreateCard(&card);
ShuffleCard(&card);
SettingCard(&card);
ShowCard(&card);
return 0;
}


void CreateCard(CARD* card)
{
for (int i = 0; i < 52; i++)
{
card->card[i] = i;
}
}

void ShuffleCard(CARD* card)
{
int temp = 0;
int dest = 0;
int sour = 0;


for (int i = 0; i < 1000; i++)
{
dest = rand() % 52;
sour = rand() % 52;

temp = card->card[dest];
card->card[dest] = card->card[sour];
card->card[sour] = temp;
}


}

void SettingCard(CARD* card)
{
for (int i = 0; i < 5; i++)
{
card->shape[i] = card->card[i] / 13;
card->number[i] = card->card[i] % 13;
if (i == 5) break;
switch (card->shape[i])
{
case 0:
cout << "♣";
break;

case 1:
cout << "◆";
break;

case 2:
cout << "♥";
break;

case 3:
cout << "♠";
break;
}
switch (card->number[i])
{
case 0:
cout << "A";
break;

case 10:
cout << "J";
break;

case 11:
cout << "Q";
break;

case 12:
cout << "K";
break;

default:
cout << card->number[i] + 1;
break;
}
}
cout << endl;
}

void ShowCard(CARD* card)
{
for (int i = 0; i < 5; i++)
{
cout << card->card[i] << endl;
}
}

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호