C/C++の宿題を片付けます 95代目
■ このスレッドは過去ログ倉庫に格納されています
0692デフォルトの名無しさん
2007/09/18(火) 01:20:57#include <stdio.h>
#include <stdlib.h>
#include <time.h>
static int trump[52];
int print_trump(int player){
int i, cnt = 0;
printf("%s\n", player > 0 ? "#player 1" : "#player 2");
#define hoge(str, start, end) \
for(printf("%s :", str), i = start; i < end; i++) \
if(trump[i] == player) printf("%3d", i%13 + 1), cnt++; \
putchar('\n');
hoge("spa", 0, 13); hoge("hea", 13, 26); hoge("clu", 26, 39); hoge("dia", 39, 52);
return cnt;
}
int isput(int field, int turn){
int i, min = 64;
for(i = 0; i < 52; i++) if(trump[i] == turn && i%13 > field%13 && min%13 >= i%13) min = i;
return min;
}
int main(void){
int i, j, field = -1, turn = -1;
for(i = 0; i < 26; i++) trump[i] = 1;
for(i = 26; i < 52; i++) trump[i] = -1;
srand((unsigned int)time(NULL));
#define swap(type, x, y) do{type tmp = x; x = y; y = tmp;}while(0)
for(i = 1; j = rand()/(RAND_MAX + 1.0)*(i + 1), i < 52; i++) swap(int, trump[i], trump[j]);
while((turn *= -1, printf("\n<%d> : %d\n", turn < 0 ? 1 : 2, field + 1), print_trump(1)) && print_trump(-1))
if((field = isput(field, turn)) != 64) trump[field] = 0, field %= 13;
else puts("pass"), field = -1;
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています