Created
October 14, 2013 13:09
-
-
Save hakatashi/6975351 to your computer and use it in GitHub Desktop.
中3のとき(C++歴3ヶ月)に書いた四則solverを恥晒しうp。きたない
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// sisoku.cpp | (c) 2009 Hakatashi | Licensed under CC0 1.0 Universal http://creativecommons.org/publicdomain/zero/1.0/ | |
#include <stdio.h> | |
#include <math.h> | |
#include <string.h> | |
/***************************************************** | |
** 即席で作ったプログラムなので限りなく汚いです。 ** | |
*****************************************************/ | |
int main(void) { | |
for (;;) { | |
int t[15],sum=0,tr,tr2,tt=0,ca=0,ansum=0,count; | |
double array[5],array2[4],array3[3],array4[2],anser,tot,ganser[1000]; | |
double tothe; | |
double tes=0; | |
char stop[256],str[5][256],str1[5][256],str2[4][256],str3[3][256],str4[2][256],anser2[1000][256]; | |
for (tr=0;tr<5;tr++) { | |
printf("%d個目の数値を入力してください。Enterで決定。\n",tr+1); | |
scanf("%lf",&array[tr]); | |
} | |
printf("目標数を入力してください。Enterで決定。\n"); | |
scanf("%lf",&tothe); | |
printf("計算を開始します。\n"); | |
for (t[0]=0;t[0]<5;t[0]++) { //最初の演算対象を決める | |
for (t[1]=0;t[1]<t[0];t[1]++) { //二番目の演算対象(一番目よりも先に来る)を決める | |
for (t[2]=0;t[2]<10;t[2]++) { //演算を決める(加法、減法(二通り)、乗法、除法(二通り)) | |
tt=0; | |
for (tr=0;tr<5;tr++) { | |
if (tr!=t[0] && tr!=t[1]) { | |
array2[tt]=array[tr]; | |
tt++; | |
} | |
} | |
if (t[2]==0) array2[3]=array[t[1]]+array[t[0]]; //加法 | |
if (t[2]==1) array2[3]=array[t[1]]-array[t[0]]; //減法 | |
if (t[2]==2) array2[3]=array[t[0]]-array[t[1]]; //減法(逆) | |
if (t[2]==3) array2[3]=array[t[1]]*array[t[0]]; //乗法 | |
if (t[2]==4) { | |
if (array[t[0]]!=0) { | |
array2[3]=array[t[1]]/array[t[0]]; //除法 | |
} | |
} | |
if (t[2]==5) { | |
if (array[t[1]]!=0) { | |
array2[3]=array[t[0]]/array[t[1]]; //除法(逆) | |
} | |
} | |
if (t[2]==4 && array[t[0]]==0) break; | |
if (t[2]==5 && array[t[1]]==0) break; | |
//累乗 | |
if (t[2]==6 && modf(array[t[1]],&tot)!=0) break; | |
if (t[2]==6 && fabs(array[t[0]])>=21) break; | |
if (t[2]==6 && fabs(array[t[1]])>=13) break; | |
if (t[2]==6 && fabs(array[t[0]])>=4 && fabs(array[t[1]])>=6) break; | |
if (t[2]==6) { | |
array2[3]=1; | |
if (array[t[1]]>=0) { | |
for (tr=0;tr<array[t[1]];tr++) { | |
array2[3]*=array[t[0]]; | |
} | |
} else { | |
for (tr=0;tr<-(array[t[1]]);tr++) { | |
array2[3]/=array[t[0]]; | |
} | |
} | |
} | |
//累乗(逆) | |
if (t[2]==7 && modf(array[t[0]],&tot)!=0) break; | |
if (t[2]==7 && fabs(array[t[1]])>=21) break; | |
if (t[2]==7 && fabs(array[t[0]])>=13) break; | |
if (t[2]==7 && fabs(array[t[1]])>=4 && fabs(array[t[0]])>=6) break; | |
if (t[2]==7) { | |
array2[3]=1; | |
if (array[t[0]]>=0) { | |
for (tr=0;tr<array[t[0]];tr++) { | |
array2[3]*=array[t[1]]; | |
} | |
} else { | |
for (tr=0;tr<-(array[t[0]]);tr++) { | |
array2[3]/=array[t[1]]; | |
} | |
} | |
} | |
//乗根 | |
ca=0; | |
if (t[2]==8) { | |
if (array[t[1]]==0.5) {ca=1; array2[3]=array[t[0]]*array[t[0]];} | |
if (array[t[1]]==1) {ca=1; array2[3]=array[t[0]];} | |
if (array[t[1]]==2 && array[t[0]]>=0) {ca=1; array2[3]=sqrt(array[t[0]]);} | |
if (array[t[1]]==0.5) {ca=1; array2[3]=1/(array[t[0]]*array[t[0]]);} | |
if (array[t[1]]==-1) {ca=1; array2[3]=1/array[t[0]];} | |
if (array[t[1]]==-2 && array[t[0]]>=0) {ca=1; array2[3]=1/sqrt(array[t[0]]);} | |
} | |
if (t[2]==8 && ca==0) break; | |
//乗根(逆) | |
ca=0; | |
if (t[2]==9) { | |
if (array[t[0]]==0.5) {ca=1; array2[3]=array[t[1]]*array[t[1]];} | |
if (array[t[0]]==1) {ca=1; array2[3]=array[t[1]];} | |
if (array[t[0]]==2 && array[t[1]]>=0) {ca=1; array2[3]=sqrt(array[t[1]]);} | |
if (array[t[0]]==0.5) {ca=1; array2[3]=1/(array[t[1]]*array[t[1]]);} | |
if (array[t[0]]==-1) {ca=1; array2[3]=1/array[t[1]];} | |
if (array[t[0]]==-2 && array[t[1]]>=0) {ca=1; array2[3]=1/sqrt(array[t[1]]);} | |
} | |
if (t[2]==9 && ca==0) break; | |
for (t[3]=0;t[3]<4;t[3]++) { | |
for (t[4]=0;t[4]<t[3];t[4]++) { | |
for (t[5]=0;t[5]<10;t[5]++) { | |
tt=0; | |
for (tr=0;tr<4;tr++) { | |
if (tr!=t[3] && tr!=t[4]) { | |
array3[tt]=array2[tr]; | |
tt++; | |
} | |
} | |
if (t[5]==0) array3[2]=array2[t[4]]+array2[t[3]]; //加法 | |
if (t[5]==1) array3[2]=array2[t[4]]-array2[t[3]]; //減法 | |
if (t[5]==2) array3[2]=array2[t[3]]-array2[t[4]]; //減法(逆) | |
if (t[5]==3) array3[2]=array2[t[4]]*array2[t[3]]; //乗法 | |
if (t[5]==4) { | |
if (array2[t[3]]!=0) { | |
array3[2]=array2[t[4]]/array2[t[3]]; //除法 | |
} | |
} | |
if (t[5]==5) { | |
if (array2[t[4]]!=0) { | |
array3[2]=array2[t[3]]/array2[t[4]]; //除法(逆) | |
} | |
} | |
if (t[5]==4 && array2[t[3]]==0) break; | |
if (t[5]==5 && array2[t[4]]==0) break; | |
//累乗 | |
if (t[5]==6 && modf(array2[t[4]],&tot)!=0) break; | |
if (t[5]==6 && fabs(array2[t[3]])>=21) break; | |
if (t[5]==6 && fabs(array2[t[4]])>=13) break; | |
if (t[5]==6 && fabs(array2[t[3]])>=4 && fabs(array2[t[4]])>=6) break; | |
if (t[5]==6) { | |
array3[2]=1; | |
if (array2[t[4]]>=0) { | |
for (tr=0;tr<array2[t[4]];tr++) { | |
array3[2]*=array2[t[3]]; | |
} | |
} else { | |
for (tr=0;tr<-(array2[t[4]]);tr++) { | |
array3[2]/=array2[t[3]]; | |
} | |
} | |
} | |
//累乗(逆) | |
if (t[5]==7 && modf(array2[t[3]],&tot)!=0) break; | |
if (t[5]==7 && fabs(array2[t[4]])>=21) break; | |
if (t[5]==7 && fabs(array2[t[3]])>=13) break; | |
if (t[5]==7 && fabs(array2[t[4]])>=4 && fabs(array2[t[3]])>=6) break; | |
if (t[5]==7) { | |
array3[2]=1; | |
if (array2[t[3]]>=0) { | |
for (tr=0;tr<array2[t[3]];tr++) { | |
array3[2]*=array2[t[4]]; | |
} | |
} else { | |
for (tr=0;tr<-(array2[t[3]]);tr++) { | |
array3[2]/=array2[t[4]]; | |
} | |
} | |
} | |
//乗根 | |
ca=0; | |
if (t[5]==8) { | |
if (array2[t[4]]==0.5) {ca=1; array3[2]=array2[t[3]]*array2[t[3]];} | |
if (array2[t[4]]==1) {ca=1; array3[2]=array2[t[3]];} | |
if (array2[t[4]]==2 && array2[t[3]]>=0) {ca=1; array3[2]=sqrt(array2[t[3]]);} | |
if (array2[t[4]]==0.5) {ca=1; array3[2]=1/(array2[t[3]]*array2[t[3]]);} | |
if (array2[t[4]]==-1) {ca=1; array3[2]=1/array2[t[3]];} | |
if (array2[t[4]]==-2 && array2[t[3]]>=0) {ca=1; array3[2]=1/sqrt(array2[t[3]]);} | |
} | |
if (t[5]==8 && ca==0) break; | |
//乗根(逆) | |
ca=0; | |
if (t[5]==9) { | |
if (array2[t[3]]==0.5) {ca=1; array3[2]=array2[t[4]]*array2[t[4]];} | |
if (array2[t[3]]==1) {ca=1; array3[2]=array2[t[4]];} | |
if (array2[t[3]]==2 && array2[t[4]]>=0) {ca=1; array3[2]=sqrt(array2[t[4]]);} | |
if (array2[t[3]]==0.5) {ca=1; array3[2]=1/(array2[t[4]]*array2[t[4]]);} | |
if (array2[t[3]]==-1) {ca=1; array3[2]=1/array2[t[4]];} | |
if (array2[t[3]]==-2 && array2[t[4]]>=0) {ca=1; array3[2]=1/sqrt(array2[t[4]]);} | |
} | |
if (t[5]==9 && ca==0) break; | |
for (t[6]=0;t[6]<3;t[6]++) { | |
for (t[7]=0;t[7]<t[6];t[7]++) { | |
for (t[8]=0;t[8]<10;t[8]++) { | |
tt=0; | |
for (tr=0;tr<3;tr++) { | |
if (tr!=t[6] && tr!=t[7]) { | |
array4[tt]=array3[tr]; | |
tt++; | |
} | |
} | |
if (t[8]==0) array4[1]=array3[t[7]]+array3[t[6]]; //加法 | |
if (t[8]==1) array4[1]=array3[t[7]]-array3[t[6]]; //減法 | |
if (t[8]==2) array4[1]=array3[t[6]]-array3[t[7]]; //減法(逆) | |
if (t[8]==3) array4[1]=array3[t[7]]*array3[t[6]]; //乗法 | |
if (t[8]==4) { | |
if (array3[t[6]]!=0) { | |
array4[1]=array3[t[7]]/array3[t[6]]; //除法 | |
} | |
} | |
if (t[8]==5) { | |
if (array3[t[7]]!=0) { | |
array4[1]=array3[t[6]]/array3[t[7]]; //除法(逆) | |
} | |
} | |
if (t[8]==4 && array3[t[6]]==0) break; | |
if (t[8]==5 && array3[t[7]]==0) break; | |
//累乗 | |
if (t[8]==6 && modf(array3[t[7]],&tot)!=0) break; | |
if (t[8]==6 && fabs(array3[t[6]])>=21) break; | |
if (t[8]==6 && fabs(array3[t[7]])>=13) break; | |
if (t[8]==6 && fabs(array3[t[6]])>=4 && fabs(array3[t[7]])>=6) break; | |
if (t[8]==6) { | |
array4[1]=1; | |
if (array3[t[7]]>=0) { | |
for (tr=0;tr<array3[t[7]];tr++) { | |
array4[1]*=array3[t[6]]; | |
} | |
} else { | |
for (tr=0;tr<-(array3[t[7]]);tr++) { | |
array4[1]/=array3[t[6]]; | |
} | |
} | |
} | |
//累乗(逆) | |
if (t[8]==7 && modf(array3[t[6]],&tot)!=0) break; | |
if (t[8]==7 && fabs(array3[t[7]])>=21) break; | |
if (t[8]==7 && fabs(array3[t[6]])>=13) break; | |
if (t[8]==7 && fabs(array3[t[7]])>=4 && fabs(array3[t[6]])>=6) break; | |
if (t[8]==7) { | |
array4[1]=1; | |
if (array3[t[6]]>=0) { | |
for (tr=0;tr<array3[t[6]];tr++) { | |
array4[1]*=array3[t[7]]; | |
} | |
} else { | |
for (tr=0;tr<-(array3[t[6]]);tr++) { | |
array4[1]/=array3[t[7]]; | |
} | |
} | |
} | |
//乗根 | |
ca=0; | |
if (t[8]==8) { | |
if (array3[t[7]]==0.5) {ca=1; array4[1]=array3[t[6]]*array3[t[6]];} | |
if (array3[t[7]]==1) {ca=1; array4[1]=array3[t[6]];} | |
if (array3[t[7]]==2 && array3[t[6]]>=0) {ca=1; array4[1]=sqrt(array3[t[6]]);} | |
if (array3[t[7]]==0.5) {ca=1; array4[1]=1/(array3[t[6]]*array3[t[6]]);} | |
if (array3[t[7]]==-1) {ca=1; array4[1]=1/array3[t[6]];} | |
if (array3[t[7]]==-2 && array3[t[6]]>=0) {ca=1; array4[1]=1/sqrt(array3[t[6]]);} | |
} | |
if (t[8]==8 && ca==0) break; | |
//乗根(逆) | |
ca=0; | |
if (t[8]==9) { | |
if (array3[t[6]]==0.5) {ca=1; array4[1]=array3[t[7]]*array3[t[7]];} | |
if (array3[t[6]]==1) {ca=1; array4[1]=array3[t[7]];} | |
if (array3[t[6]]==2 && array3[t[7]]>=0) {ca=1; array4[1]=sqrt(array3[t[7]]);} | |
if (array3[t[6]]==0.5) {ca=1; array4[1]=1/(array3[t[7]]*array3[t[7]]);} | |
if (array3[t[6]]==-1) {ca=1; array4[1]=1/array3[t[7]];} | |
if (array3[t[6]]==-2 && array3[t[7]]>=0) {ca=1; array4[1]=1/sqrt(array3[t[7]]);} | |
} | |
if (t[8]==9 && ca==0) break; | |
for (t[9]=0;t[9]<10;t[9]++) { | |
if (t[9]==0) anser=array4[0]+array4[1]; //加法 | |
if (t[9]==1) anser=array4[0]-array4[1]; //減法 | |
if (t[9]==2) anser=array4[1]-array4[0]; //減法(逆) | |
if (t[9]==3) anser=array4[0]*array4[1]; //乗法 | |
if (t[9]==4) { | |
if (array4[1]!=0) { | |
anser=array4[0]/array4[1]; //除法 | |
} | |
} | |
if (t[9]==5) { | |
if (array4[0]!=0) { | |
anser=array4[1]/array4[0]; //除法(逆) | |
} | |
} | |
if (t[9]==4 && array4[1]==0) break; | |
if (t[9]==5 && array4[0]==0) break; | |
//累乗 | |
if (t[9]==6 && modf(array4[0],&tot)!=0) break; | |
if (t[9]==6 && fabs(array4[1])>=21) break; | |
if (t[9]==6 && fabs(array4[0])>=13) break; | |
if (t[9]==6 && fabs(array4[1])>=4 && fabs(array4[0])>=6) break; | |
if (t[9]==6) { | |
anser=1; | |
if (array4[0]>=0) { | |
for (tr=0;tr<array4[0];tr++) { | |
anser*=array4[1]; | |
} | |
} else { | |
for (tr=0;tr<-(array4[0]);tr++) { | |
anser/=array4[1]; | |
} | |
} | |
} | |
//累乗(逆) | |
if (t[9]==7 && modf(array4[1],&tot)!=0) break; | |
if (t[9]==7 && fabs(array4[0])>=21) break; | |
if (t[9]==7 && fabs(array4[1])>=13) break; | |
if (t[9]==7 && fabs(array4[0])>=4 && fabs(array4[1])>=6) break; | |
if (t[9]==7) { | |
anser=1; | |
if (array4[1]>=0) { | |
for (tr=0;tr<array4[1];tr++) { | |
anser*=array4[0]; | |
} | |
} else { | |
for (tr=0;tr<-(array4[1]);tr++) { | |
anser/=array4[0]; | |
} | |
} | |
} | |
//乗根 | |
ca=0; | |
if (t[9]==8) { | |
if (array4[0]==0.5) {ca=1; anser=array4[1]*array4[1];} | |
if (array4[0]==1) {ca=1; anser=array4[1];} | |
if (array4[0]==2 && array4[1]>=0) {ca=1; anser=sqrt(array4[1]);} | |
if (array4[0]==0.5) {ca=1; anser=1/(array4[1]*array4[1]);} | |
if (array4[0]==-1) {ca=1; anser=1/array4[1];} | |
if (array4[0]==-2 && array4[1]>=0) {ca=1; anser=1/sqrt(array4[1]);} | |
} | |
if (t[9]==8 && ca==0) break; | |
//乗根(逆) | |
ca=0; | |
if (t[9]==9) { | |
if (array4[1]==0.5) {ca=1; anser=array4[0]*array4[0];} | |
if (array4[1]==1) {ca=1; anser=array4[0];} | |
if (array4[1]==2 && array4[0]>=0) {ca=1; anser=sqrt(array4[0]);} | |
if (array4[1]==0.5) {ca=1; anser=1/(array4[0]*array4[0]);} | |
if (array4[1]==-1) {ca=1; anser=1/array4[0];} | |
if (array4[1]==-2 && array4[0]>=0) {ca=1; anser=1/sqrt(array4[0]);} | |
} | |
if (t[9]==9 && ca==0) break; | |
sum++; | |
if (sum%10000==0) printf("計算中... %8d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d to%f\n",sum,t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],anser); | |
if (anser>(tothe-0.0001) && anser<(tothe+0.0001)) { | |
ansum++; | |
ganser[ansum-1]=anser; | |
printf("計算中... %8d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d to%f\n",sum,t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],anser); | |
printf("\n%d個目の解らしきものが見つかりました。計算を中断します。\n",ansum); | |
printf("計算結果を解析します....\n"); | |
for (tr=0;tr<5;tr++) { | |
sprintf(str[tr],"%f",array[tr]); | |
if (array[tr]>=1000) count=4; | |
else if (array[tr]>=100) count=3; | |
else if (array[tr]>=10) count=2; | |
else count=1; | |
if (modf(array[tr],&tot)!=0) count+=3; | |
strncpy(str1[tr],str[tr],count); | |
str1[tr][count]='\0'; // EOSを付加 | |
//printf("%s ",str1[tr]); | |
} | |
//printf("\n"); | |
tt=0; | |
for (tr=0;tr<5;tr++) { | |
if (tr!=t[0] && tr!=t[1]) { | |
strcpy(str2[tt],str1[tr]); | |
//str2[tt][1]='\0'; | |
tt++; | |
} | |
} | |
for (tr=0;tr<3;tr++) { | |
//printf("%s ",str2[tr]); | |
} | |
if (t[2]==0 || t[2]==1 || t[2]==3 || t[2]==4 || t[2]==7 || t[2]==8) { | |
switch (t[2]) { | |
case 0: | |
strcpy(stop,"+"); | |
break; | |
case 1: | |
strcpy(stop,"-"); | |
break; | |
case 3: | |
strcpy(stop,"*"); | |
break; | |
case 4: | |
strcpy(stop,"/"); | |
break; | |
case 7: | |
strcpy(stop,"^"); | |
break; | |
case 8: | |
strcpy(stop,"#"); | |
break; | |
} | |
sprintf(str2[3],"%s%s%s%s%s","(",str1[t[1]],stop,str1[t[0]],")"); | |
} | |
if (t[2]==2 || t[2]==5 || t[2]==6 || t[2]==9) { | |
switch (t[2]) { | |
case 2: | |
strcpy(stop,"-"); | |
break; | |
case 5: | |
strcpy(stop,"/"); | |
break; | |
case 6: | |
strcpy(stop,"^"); | |
break; | |
case 9: | |
strcpy(stop,"#"); | |
break; | |
} | |
sprintf(str2[3],"%s%s%s%s%s","(",str1[t[0]],stop,str1[t[1]],")"); | |
} | |
//printf("%s ",stop); | |
//printf("%s\n",str2[3]); | |
tt=0; | |
for (tr=0;tr<4;tr++) { | |
if (tr!=t[3] && tr!=t[4]) { | |
strcpy(str3[tt],str2[tr]); | |
tt++; | |
} | |
} | |
for (tr=0;tr<2;tr++) { | |
//printf("%s ",str3[tr]); | |
} | |
if (t[5]==0 || t[5]==1 || t[5]==3 || t[5]==4 || t[5]==7 || t[5]==8) { | |
switch (t[5]) { | |
case 0: | |
strcpy(stop,"+"); | |
break; | |
case 1: | |
strcpy(stop,"-"); | |
break; | |
case 3: | |
strcpy(stop,"*"); | |
break; | |
case 4: | |
strcpy(stop,"/"); | |
break; | |
case 7: | |
strcpy(stop,"^"); | |
break; | |
case 8: | |
strcpy(stop,"#"); | |
break; | |
} | |
sprintf(str3[2],"%s%s%s%s%s","(",str2[t[4]],stop,str2[t[3]],")"); | |
} | |
if (t[5]==2 || t[5]==5 || t[5]==6 || t[5]==9) { | |
switch (t[5]) { | |
case 2: | |
strcpy(stop,"-"); | |
break; | |
case 5: | |
strcpy(stop,"/"); | |
break; | |
case 6: | |
strcpy(stop,"^"); | |
break; | |
case 9: | |
strcpy(stop,"#"); | |
break; | |
} | |
sprintf(str3[2],"%s%s%s%s%s","(",str2[t[3]],stop,str2[t[4]],")"); | |
} | |
//printf("%s ",stop); | |
//printf("%s\n",str3[2]); | |
tt=0; | |
for (tr=0;tr<3;tr++) { | |
if (tr!=t[6] && tr!=t[7]) { | |
strcpy(str4[tt],str3[tr]); | |
tt++; | |
} | |
} | |
for (tr=0;tr<1;tr++) { | |
//printf("%s ",str4[tr]); | |
} | |
if (t[8]==0 || t[8]==1 || t[8]==3 || t[8]==4 || t[8]==7 || t[8]==8) { | |
switch (t[8]) { | |
case 0: | |
strcpy(stop,"+"); | |
break; | |
case 1: | |
strcpy(stop,"-"); | |
break; | |
case 3: | |
strcpy(stop,"*"); | |
break; | |
case 4: | |
strcpy(stop,"/"); | |
break; | |
case 7: | |
strcpy(stop,"^"); | |
break; | |
case 8: | |
strcpy(stop,"#"); | |
break; | |
} | |
sprintf(str4[1],"%s%s%s%s%s","(",str3[t[7]],stop,str3[t[6]],")"); | |
} | |
if (t[8]==2 || t[8]==5 || t[8]==6 || t[8]==9) { | |
switch (t[8]) { | |
case 2: | |
strcpy(stop,"-"); | |
break; | |
case 5: | |
strcpy(stop,"/"); | |
break; | |
case 6: | |
strcpy(stop,"^"); | |
break; | |
case 9: | |
strcpy(stop,"#"); | |
break; | |
} | |
sprintf(str4[1],"%s%s%s%s%s","(",str3[t[6]],stop,str3[t[7]],")"); | |
} | |
//printf("%s",stop); | |
//printf("%s",str4[1]); | |
if (t[9]==0 || t[9]==1 || t[9]==3 || t[9]==4 || t[9]==7 || t[9]==8) { | |
switch (t[9]) { | |
case 0: | |
strcpy(stop,"+"); | |
break; | |
case 1: | |
strcpy(stop,"-"); | |
break; | |
case 3: | |
strcpy(stop,"*"); | |
break; | |
case 4: | |
strcpy(stop,"/"); | |
break; | |
case 7: | |
strcpy(stop,"^"); | |
break; | |
case 8: | |
strcpy(stop,"#"); | |
break; | |
} | |
sprintf(anser2[ansum-1],"%s%s%s",str4[0],stop,str4[1]); | |
} | |
if (t[9]==2 || t[9]==5 || t[9]==6 || t[9]==9) { | |
switch (t[9]) { | |
case 2: | |
strcpy(stop,"-"); | |
break; | |
case 5: | |
strcpy(stop,"/"); | |
break; | |
case 6: | |
strcpy(stop,"^"); | |
break; | |
case 9: | |
strcpy(stop,"#"); | |
break; | |
} | |
sprintf(anser2[ansum-1],"%s%s%s",str4[1],stop,str4[0]); | |
} | |
//printf("\n%s\n",stop); | |
printf("計算結果:"); | |
printf("%s\n計算を再開します。\n\n",anser2[ansum-1]); | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
printf("\n"); | |
printf("%d回の計算の後に",sum); | |
if (ansum==0) printf("解は見つかりませんでしたorz\n"); | |
if (ansum>0) { | |
printf("%d個の解が見つかりました。以下に表示します。\n",ansum); | |
printf("使用数:"); | |
for (tr=0;tr<5;tr++) { | |
printf("%f ",array[tr]); | |
} | |
printf("目標数:%f\n",tothe); | |
for (tr=0;tr<ansum;tr++) { | |
printf(anser2[tr]); | |
printf("="); | |
printf("%f\n",ganser[tr]); | |
} | |
printf("\n※ √ は都合上 # に置き換わっています。\n"); | |
printf("※ 同じ解がダブる可能性があります。\n"); | |
printf("※ A-(B+C) や (A-B)-C や (A-C)-B などは違うものとみなされます。\n"); | |
printf("※ ±0.0001以下の誤差は保証の限りではありません。\n"); | |
} | |
printf("※ 解が存在する問題でも、桁数の都合上解けない場合があります。\n"); | |
printf("\n\n======================================================\n\n"); | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment