c言語
答えを0にするこまち算のプログラムを組んでみたのですが、ここからどうしても進まなくなってしまいました。
自分ではいけるかなと思ったのですが、9-8-7+65-4321=9など答えがありえない数になってしまいます。
どこがいけないか教えてください。むしろ最初から組み直した方がよいのでしょうか…
#include <stdio.h>
int cul();
int num[9] ={9,8,7,6,5,4,3,2,1};
int total;/**/
int kigou[8]={0,0,0,0,0,0,0,0};
int main(){
for(kigou[0]=0;kigou[0]<3;kigou[0]++){
for(kigou[1]=0;kigou[1]<3;kigou[1]++){
for(kigou[2]=0;kigou[2]<3;kigou[2]++){
for(kigou[3]=0;kigou[3]<3;kigou[3]++){
for(kigou[4]=0;kigou[4]<3;kigou[4]++){
for(kigou[5]=0;kigou[5]<3;kigou[5]++){
for(kigou[6]=0;kigou[6]<3;kigou[6]++){
for(kigou[7]=0;kigou[7]<3;kigou[7]++){
keisan();
}
}
}
}
}
}
}
}
return 0;
}
int keisan(){
int n =0;
int flag = 0;
int t = 0;
int i = 0;
total = num[0];
/* for (n=0;n<9;n++)
printf("kigou[%d] == %d",n,kigou[n]);確かめ*/
for(;n<8;n++){
if(kigou[n] == 0 && n == 0){
total = total * 10 + num[n+1];
for(flag=1;kigou[n+flag]==0 && (n+flag)<9 ;flag++){
total = total * 10 + num[n+flag+1];
}
n = n + flag;
}
flag=0;
if(kigou[n]!= 0){
for(flag=1;kigou[n+flag]==0 && (n+flag)<9 ;flag++){
t = num[n+1] * 10 + num[n+flag+1];
}
n = n+ flag;
total = total + t;
}
}
/*0になる計算式の表示*/
kigou[8]=2;/*表示しないために空白を入れる*/
if(total==0){
for(i=0;i<9;i++){
printf("%d",num[i]);
if(kigou[i]==0)
printf("+");
if(kigou[i]==1)
printf("-");
if(kigou[i]==2)
printf("");
}
printf("=%d\n",total);
}
return 0;
}