From mik@remus.dti.ne.jp Sun May 30 16:14:11 1999 Received: from wise19.mn.waseda.ac.jp (wise19.mn.waseda.ac.jp [133.9.4.137]) by newton.kashi.info.waseda.ac.jp (8.8.8/3.7W) with ESMTP id QAA17276 for ; Sun, 30 May 1999 16:14:10 +0900 (JST) Received: from wise20.mn.waseda.ac.jp (wise20.mn.waseda.ac.jp [133.9.4.141]) by wise19.mn.waseda.ac.jp (8.9.1a/3.7W-19980811) with ESMTP id QAA12886 for ; Sun, 30 May 1999 16:03:16 +0900 (JST) Received: from wise13.mn.waseda.ac.jp (wise13.mn.waseda.ac.jp [133.9.4.145]) by wise20.mn.waseda.ac.jp (8.9.1+3.0W/3.7W-19981111) with ESMTP id QAA16819 for ; Sun, 30 May 1999 16:03:16 +0900 (JST) Received: from smtp2.dti.ne.jp (smtp2.dti.ne.jp [210.170.128.122]) by wise13.mn.waseda.ac.jp (8.9.1a/3.7W-19980811) with ESMTP id QAA23847 for ; Sun, 30 May 1999 16:03:15 +0900 (JST) Received: from xynada.remus.dti.ne.jp (PPP31.kawagoe-ap.dti.ne.jp [210.159.169.31]) by smtp2.dti.ne.jp (8.9.0/3.7W) with SMTP id QAA13135; Sun, 30 May 1999 16:03:14 +0900 (JST) Message-Id: <199905300702.AA00069@xynada.remus.dti.ne.jp> Date: Sun, 30 May 1999 16:02:50 +0900 To: kashi@mn.waseda.ac.jp Cc: mik@remus.dti.ne.jp Subject: =?ISO-2022-JP?B?W0pTSl0xMTA0MjMbJEJAWklkJE5IVjlmJEcbKEIx?= =?ISO-2022-JP?B?MBskQiRyOm4kayVRJTolaxsoQg==?= From: mik@remus.dti.ne.jp (=?ISO-2022-JP?B?GyRCQVI2NiEhQD8bKEI=?=) MIME-Version: 1.0 X-Mailer: AL-Mail32 Version 1.01 Content-Type: text/plain; charset=iso-2022-jp Status: OR 「切符の番号で10を作るパズル」のプログラム 倉橋 誠 (G97P038-3) g97p0383@mn.waseda.ac.jp  遅くなりましたが、「切符の番号で10を作るパズル」のプログラムを 提出します。 #include int maketen(double cn, double *num); void sounyu(char ire); void sakujo(int jisuu); void zengo(double cn, double *num, int i, int e); char cnum[]={'4','5','6','7'}; //きっぷの4つの数字 char rireki[10]; void main(void) { double num[]={4.0,5.0,6.0,7.0}; //きっぷの4つの数字 double cn=9999.0; rireki[0]='0'; maketen(cn,num); } void sounyu(char ire) { int i=0; while(rireki[i]!='0') i++; rireki[i]=ire; rireki[i+1]='0'; return; } void sakujo(int jisuu) { int i=0; while(rireki[i]!='0') i++; for(;jisuu>=1; jisuu--) { rireki[--i]='0'; } return; } int maketen(double cn, double *num) { double tai; if (num[0]==-1 && num[1]==-1 && num[2]==-1 && num[3]==-1) { if(cn==10.0){ for(int j=0; j<=6; j++) printf("%c", rireki[j]); printf(" = %f \n" , cn); } return 1; } for(int i=0; i<=3; i++) { if(num[i]==-1) continue; if(cn==9999.0) { cn=num[i]; tai=num[i]; num[i]=-1.0; sounyu(cnum[i]); maketen(cn,num); num[i]=tai; cn=9999.0; sakujo(1); } else { for(int k=1; k<=6; k++) zengo(cn,num,i,k); } } return 1; } void zengo(double cn, double *num, int i, int e) { double tai,tai2; tai2=cn; sounyu(cnum[i]); switch(e){ case 1: cn=cn+num[i]; sounyu('+');break; case 2: cn=cn-num[i]; sounyu('-');break; case 3: cn=num[i]-cn; sounyu('#');break; case 4: cn=cn*num[i]; sounyu('*');break; case 5: cn=cn/num[i]; sounyu('/');break; case 6: cn=num[i]/cn; sounyu('A');break; } tai=num[i]; num[i]=-1; maketen(cn, num); num[i]=tai; cn=tai2; sakujo(2); } 実行結果(切符の数字が4567だった場合) この実行結果は、左から読みます。例えば 45+ は 4+5を表します。 45+6-は、(4+5)-6 です。 46# は 6-4 を、56A は 6/5 を表します。 45+6-7+ = 10.000000 45+6#7# = 10.000000 45+7+6- = 10.000000 46-5+7+ = 10.000000 46-7+5+ = 10.000000 46#5-7# = 10.000000 46#5#7+ = 10.000000 46#7-5# = 10.000000 46#7#5+ = 10.000000 47+5+6- = 10.000000 47+6-5+ = 10.000000 47+6#5# = 10.000000 47#5/6A = 10.000000 47#5A6* = 10.000000 47#6/5A = 10.000000 47#6A5* = 10.000000 54+6-7+ = 10.000000 54+6#7# = 10.000000 54+7+6- = 10.000000 56-4+7+ = 10.000000 56-7+4+ = 10.000000 56#4-7# = 10.000000 56#4#7+ = 10.000000 56#7-4# = 10.000000 56#7#4+ = 10.000000 57+4+6- = 10.000000 57+6-4+ = 10.000000 57+6#4# = 10.000000 64-5-7# = 10.000000 64-5#7+ = 10.000000 64-7-5# = 10.000000 64-7#5+ = 10.000000 64#5+7+ = 10.000000 64#7+5+ = 10.000000 65-4-7# = 10.000000 65-4#7+ = 10.000000 65-7-4# = 10.000000 65-7#4+ = 10.000000 65#4+7+ = 10.000000 65#7+4+ = 10.000000 67-4-5# = 10.000000 67-4#5+ = 10.000000 67-5-4# = 10.000000 67-5#4+ = 10.000000 67#4+5+ = 10.000000 67#5+4+ = 10.000000 74+5+6- = 10.000000 74+6-5+ = 10.000000 74+6#5# = 10.000000 74-5/6A = 10.000000 74-5A6* = 10.000000 74-6/5A = 10.000000 74-6A5* = 10.000000 75+4+6- = 10.000000 75+6-4+ = 10.000000 75+6#4# = 10.000000 76-4+5+ = 10.000000 76-5+4+ = 10.000000 76#4-5# = 10.000000 76#4#5+ = 10.000000 76#5-4# = 10.000000 76#5#4+ = 10.000000 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 理工学部情報学科3年 倉橋 誠 mik@remus.dti.ne.jp g97p0383@mn.waseda.ac.jp