/* Launo Tuuri --- C-ohj (Taina) s97 ------ Laskarit 3 Tehtävä 5 */ #include int onko_sinkku(int kasi[], int kortti, int vai_3) { int i, j, k; if (kortti < 13) { i = 0; j = 13; } else if (kortti > 12 && kortti < 26) { i = 13; j = 26; } else if (kortti > 25 && kortti < 39) { i = 26; j = 39; } else { i = 39; j = 52; } if (vai_3 == 0) { for (k=0; k<13; ++k) if (kasi[k] != kortti && kasi[k] >= i && kasi[k] < j) return 0; return 1; } else { int no_onko = 3; for (k=0; k<13; ++k) if (kasi[k] != kortti && kasi[k] >= i && kasi[k] < j) --no_onko; if (no_onko <= 0) return 0; return 1; } } int arvopisteet(int kasi[]) { int i, p = 0; for (i=0; i<13; ++i) { switch (kasi[i] % 13) { case 12: p += 4; break; case 11: if ( onko_sinkku(kasi, kasi[i], 0) ) p += 2; else p += 3; break; case 10: if ( onko_sinkku(kasi, kasi[i], 0) ) p += 1; else p += 2; break; case 9: if ( !onko_sinkku(kasi, kasi[i], 1) ) p += 1; break; } } return p; } int jakopisteet(int kasi[]) { int i, p = 0; int jp[] = {3,3,3,3}; for (i=0; i<13; ++i) --jp[ kasi[i]/13 ]; for (i=0; i<4; ++i) p += jp[i] > 0 ? jp[i] : 0; return p; } int main() { /* testataan funktio onko_sinkku(), joka osaa tunnistaa myös tripletonit - ko valinta viimeisellä parametrillä */ int a[] = {5,29,39,2,41,24,30,49,43,27,47,31,48}, /* ^^ käden ainoa sinkku... */ b[] = {12,14,13,44,40,21,9,16,46,26,35,32,7}, /* kädessä 2 tripleton sotamiestä */ c[] = {0,1,2,3,4,5,6,7,8,9,10,11,12}; /* kädessä vain yhtä maata */ int i; for (i=0; i<13; ++i) if ( onko_sinkku(a, a[i], 0) ) printf("sinkku herttakunkku\n"); if ( onko_sinkku(b, 9, 1) ) printf("tripleton pata-jätkä\n"); if ( onko_sinkku(b, 35, 1) ) printf("tripleton ruutu-jätkä\n"); /* testataan funktio arvopisteet() */ printf("käsi b:n arvopisteet: %d\n", arvopisteet(b)); /* testataan funktio jakopisteet() */ printf(" jakopisteet: %d\n", jakopisteet(b)); printf("käsi c:n jakopisteet: %d\n", jakopisteet(c)); return 0; }