Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Tue, 07 Feb 2012 09:32:24 -0600 Message-ID: <4F314405.6A9F@mindspring.com> Date: Tue, 07 Feb 2012 10:32:21 -0500 From: pete Reply-To: pfiland@mindspring.com Organization: PF X-Mailer: Mozilla 3.04Gold (WinNT; I) MIME-Version: 1.0 Newsgroups: comp.lang.c Subject: Re: card-counting program for blackjack References: <18e43b14-0c7a-41bf-84a8-dc27f0e199f2@c6g2000vbk.googlegroups.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 114 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 4.154.218.149 X-Trace: sv3-EP9AYtNVU/YCL9LxnNDl+wenyeC54fnoif37zsWWqBLiaMK64hho5x7R1t41OsZygn3FVKGzsUkTGcv!TnH22ylC9kJAV1XdWh112p1q0n/MQs2t/nAivhb/WE28Jr373zYR6jr0YprWiCvSKlmfTmHkazTY!Vj5f5ceh+fk= X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 4133 Xref: x330-a1.tempe.blueboxinc.net comp.lang.c:16839 luser- -droog wrote: > > Sir, is that a keyboard in your sleeve? > > 692(1)03:51 PM:~ 0> cat bj.c && echo --------- && make bj && bj > #include > #include > #include > > enum { cards = 13, suits = 4, decks = 4 }; > int count[cards]; > int total; > char symbols[] = "234567890jqka"; > > void reset() { > int i; > total = 0; > for (i=0; i < cards; i++) > total += count[i] = suits * decks; > } > > void sub(char c) { > if(c=='s') > reset(); > else { > char *p = strchr(symbols, tolower(c)); > if (p == NULL) return; > --count[ p - symbols ]; > --total; > } > } > > void show() { > int i; > for (i=0; i < cards; i++) printf(" %c ", toupper(symbols[i])); > puts(""); > for (i=0; i < cards; i++) printf("%3d ", count[i]); > printf(" 10s:%d ", count[8]+count[9]+count[10]+count[11]); > printf(" Total:%d", total); > puts(""); > for (i=0; i < cards; i++) printf("%3d ", (count[i]*100)/total); > printf(" 10s:%d ", ((count[8]+count[9]+count[10]+count[11])*100)/ > total); > puts(""); > } > > char buf[99]; > > void readline() { > fgets(buf,99,stdin); > } > > void doline() { > int i = 0; > while(buf[i]){ > if (!isspace(buf[i])) > sub(buf[i]); > ++i; > } > } > > int main() { > reset(); > while(1) { > show(); > readline(); > doline(); > } > return 0; > } > > --------- > cc -g -Wall bj.c -o bj > 2 3 4 5 6 7 8 9 0 J Q K A > 16 16 16 16 16 16 16 16 16 16 16 16 16 10s:64 Total: > 208 > 7 7 7 7 7 7 7 7 7 7 7 7 7 10s:30 This point is where the output stops on my machine. Either that, or this is the point where the program runs too slowly for me to continue waiting for more output. > 460ak > 2 3 4 5 6 7 8 9 0 J Q K A > 16 16 15 16 15 16 16 16 15 16 16 15 15 10s:62 Total: > 203 > 7 7 7 7 7 7 7 7 7 7 7 7 7 10s:30 > 3 9 q kaj > 2 3 4 5 6 7 8 9 0 J Q K A > 16 15 15 16 15 16 16 15 15 15 15 14 14 10s:59 Total: > 197 > 8 7 7 8 7 8 8 7 7 7 7 7 7 10s:29 > 2 4q 48a > 2 3 4 5 6 7 8 9 0 J Q K A > 15 15 13 16 15 16 15 15 15 15 14 14 13 10s:58 Total: > 191 > 7 7 6 8 7 8 7 7 7 7 7 7 6 10s:30 > 2 4 4 8 0 a q > 2 3 4 5 6 7 8 9 0 J Q K A > 14 15 11 16 15 16 14 15 14 15 13 14 12 10s:56 Total: > 184 > 7 8 5 8 8 8 7 8 7 8 7 7 6 10s:30 > 4 4 8 ak > 2 3 4 5 6 7 8 9 0 J Q K A > 14 15 9 16 15 16 13 15 14 15 13 13 11 10s:55 Total: > 179 > 7 8 5 8 8 8 7 8 7 8 7 7 6 10s:30 > ^C > 693(1)03:52 PM:~ 130> -- pete