📄 shuangseqiuguolv.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//////////////////////////////////
int A[7]={0};
int ca[40][35]={0};
int ex[36]={0};
int ex_0_1[50][4]={0};
char res_file[500],result_file[500],ca_file[500];
/////////////////////////////////////////
void main()
{
int i,j=0,m=0,n=0,k[40]={0};
int dan_num=0,t=0,dan_g_num=0,ex_num=0,ex_0_1_num=0;
int s=0,tem=0,cnt=0,sum=0,num=0,h=0;
int ca_dan_flag=0,sum_flag=0,ex_flag=0 ,btc_flag=0;
FILE *fr,*fw;
FILE *ex_0_1_fr,*ex_fr,*ca_fr;
printf("请输入源文件名\n");
scanf("%s",res_file);
if((fr=fopen(res_file,"r"))==NULL)
{
printf("cannot open the file\n");
exit(0);
}
printf("请输入结果文件名\n");
scanf("%s",result_file);
fw=fopen(result_file,"w");
////////////////////////////////////////////////////////////////////////
//胆组条件读入
//数字第一个数字和最后一个数字分别为胆组在奖号中出现的最少个数和最多个数
ca_fr=fopen("ca","r");
while(fscanf(ca_fr,"%d",&s)!=EOF)
{
if(s!=34)
ca[t][dan_num++]=s;
else
{
k[t]=dan_num; //记录每行数字
t++;
dan_num=0;
}
}
dan_g_num=t;
//打印胆组条件:
printf("胆组条件:\n");
for(m=0;m<dan_g_num;m++)
{
for(n=0;n<k[m];n++)
printf("%d ",ca[m][n]);
printf("\n");
}
////////////////////////////////////////////////////////////////////////////
//批量排除条件读入
ex_fr=fopen("ex","r");
while(fscanf(ex_fr,"%d",&s)!=EOF)
{
ex[ex_num++]=s;
}
printf("要排除的号码有:\n");
for(i=0;i<ex_num;i++) printf("%02d ",ex[i]);
printf("\n");
////////////////////////////////////////////////////////////////////
//////////////////2数不同出条件读入
ex_0_1_fr=fopen("ex_=0-1","r");
while(fscanf(ex_0_1_fr,"%d",&s)!=EOF)//读入不同出条件
{
ex_0_1[h][num++]=s;
if(num==2)
{
num=0;
h++;
}
}
//////////////////////////////////////////////////
///////////////////////过滤操作//////////////////////////////
while(fscanf(fr,"%d",&s)!=EOF)
{
A[j++]=s;
if(j==6) //读入6个数字
{
j=0; ca_dan_flag=0;ex_flag=0;sum_flag=0;btc_flag=0;cnt=0;
///////////////////////////////////////////
for(n=0;n<dan_g_num;n++)//胆组交集过滤
{
cnt=0;
for(i=0;i<6;i++)
{
for(m=1;m<k[n]-1;m++)
if(A[i]==ca[n][m]) cnt++;
}
if(cnt<ca[n][0]||cnt>ca[n][k[n]-1])
break;
}
if(n==dan_g_num) ca_dan_flag=1;
/////////////////////////////////////////////////////
////////////////和值+批量排除
sum=0;
for(i=0;i<6;i++)
sum+=A[i];
if(sum>=80&&sum<=130) sum_flag=1;//只取[80,130]间的组合
//批量排除过滤
cnt=0;
for(i=0;i<6;i++)
for(m=0;m<ex_num;m++)
if(A[i]==ex[m]) cnt++;
if(cnt==0) ex_flag=1;
/////////////////////////////////////////////////////
/////////////////////不同出过滤
for(n=0;n<h;n++)
{
cnt=0;
for(i=0;i<6;i++)
for(t=0;t<2;t++)
if(A[i]==ex_0_1[n][t]) cnt++; //fprintf(fw,"%d\n",cnt);
if(cnt==2)
break;
}
if(n==h) btc_flag=1;
/////////////////////////////////////////////////////////////
////////////打印过滤结果
if(ca_dan_flag==1&&ex_flag==1&&sum_flag==1&&btc_flag==1)
{
for(i=0;i<6;i++)
fprintf(fw,"%02d ",A[i]);
fprintf(fw,"\n");
}
}
}
fcloseall();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -