⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yijingsuanfa.cpp

📁 输入您的生辰八字
💻 CPP
字号:
#include<iostream>
#include<string>
using namespace std;
int main()
{
	int year,month,day;
	double hour;
	int m_gua,m_guaup,m_guadown,m_hugua,m_huup,m_hudown,m_bgua,m_bup,m_bdown;
	int m_bhugua,m_bhuup,m_bhudown,bpt,bptup,bptdown,bpthu,bpthuup,bpthudown;
	int mpt,mptup,mptdown,mpthu,mpthuup,mpthudown,y;
	int dz,_hour,smd=0,yyzq;
	void hu_gua(int *m,int *n);
	void yao_bian(int *m,int *n,int y);
	void bpt_sf(int *m,int *n);
	cout<<"请输入您的生辰八字:"<<endl;
	cout<<"出生年份:";
	cin>>year;
	cout<<endl<<"出生月份(农历):";
	cin>>month;
	if(month<=0||month>12)
	{
		cout<<"输入月份错误,请重新输入:";
		cin>>month;
	}
	cout<<endl<<"出生日期(农历):";
	cin>>day;
	if(day<=0||day>31)
	{
		cout<<"输入日期错误,请重新输入:";
		cin>>day;
	}
	cout<<endl<<"出生时间(24小时制,若不是整点,请用小数表示):";
	cin>>hour;
	if(hour<0||hour>24)
	{
		cout<<"输入时间错误,请重新输入:";
		cin>>hour;
	}
	cout<<endl;
	_hour=(hour+1)/2+1;
	if(hour>=23||hour<1)
		_hour=1;
	dz=(year-3)%12;
	if(dz==0)
		dz=12;
	m_guaup=(dz+month+day)%8;   //主卦的上卦数//
	if(m_guaup==0)
		m_guaup=8;
	m_guadown=(dz+month+day+_hour)%8;  //主卦的下卦数//
	if(m_guadown==0)
		m_guadown=8;
	y=(dz+month+day+_hour)%6;        //求爻变//
	if(y==0)
		y=6;
	m_gua=m_guaup+m_guadown;   //计算主卦数//
	m_huup=m_guaup;
	m_hudown=m_guadown;
	hu_gua(&m_huup,&m_hudown);
	m_hugua=m_huup+m_hudown;  //计算主卦的互卦数//
	m_bup=m_guaup;
	m_bdown=m_guadown;
	yao_bian(&m_bup,&m_bdown,y); 
	m_bgua=m_bup+m_bdown;	//计算变卦数//
	m_bhuup=m_bup;       
	m_bhudown=m_bdown;
	hu_gua(&m_bhuup,&m_bhudown);
	m_bhugua=m_bhuup+m_bhudown; //计算变卦的互卦数//
	bptup=m_bup;
	bptdown=m_bdown;
	bpt_sf(&bptup,&bptdown);
	bpt=bptup+bptdown;   //计算变旁通//
	bpthuup=bptup;
	bpthudown=bptdown;
	hu_gua(&bpthuup,&bpthudown);
	bpthu=bpthuup+bpthudown;  //计算变旁通的互卦数//
	mptup=m_guaup;
	mptdown=m_guadown;
	bpt_sf(&mptup,&mptdown);
	mpt=mptup+mptdown;   //计算主旁通//
	mpthuup=mptup;
	mpthudown=mptdown;
	hu_gua(&mpthuup,&mpthudown);
	mpthu=mpthuup+mpthudown;  //计算主旁通的互卦数//
	int smd_[12]={m_gua,m_hugua,y,m_bgua,m_bhugua,y,bpt,bpthu,y,mpt,mpthu,y};
	int i;
	cout<<endl<<"您的生命点为:"<<endl;
	for(i=0;i<12;i++)
	{
		smd+=smd_[i];
		cout<<smd<<"  ";
		if(i>0&&(i+1)%4==0)
			cout<<endl;
	}
	yyzq=smd;
	cout<<endl<<"您的一元周期为:"<<yyzq<<endl;
	return 0;
}


void hu_gua(int *m,int *n)   //求互卦数的函数//
{
	int a=0,b=0,c=0,d=0,e=0,f=0;
	
	if(*m==1)
	{
		a=b=c=0;
	}
	if(*m==2)
	{
		a=1;
		b=c=0;
	}
	if(*m==3)
	{
		a=c=0;
		b=1;
	}
	if(*m==4)
	{
		a=b=1;
		c=0;
	}
	if(*m==5)
	{
		a=b=0;
		c=1;
	}
	if(*m==6)
	{
		a=c=1;
		b=0;
	}
	if(*m==7)
	{
		b=c=1;
		a=0;
	}
	if(*m==8)
	{
		a=b=c=1;
	}
	if(*n==1)
	{
		d=e=f=0;
	}
	if(*n==2)
	{
		d=1;
		e=f=0;
	}
	if(*n==3)
	{
		d=f=0;
		e=1;
	}
	if(*n==4)
	{
		d=e=1;
		f=0;
	}
	if(*n==5)
	{
		d=e=0;
		f=1;
	}
	if(*n==6)
	{
		d=f=1;
		e=0;
	}
	if(*n==7)
	{
		e=f=1;
		d=0;
	}
	if(*n==8)
	{
		d=e=f=1;
	}
	*m=d*2*2+c*2+b+1;
	*n=e*2*2+d*2+c+1;
}

void yao_bian(int *m,int *n,int y)   //求主卦经爻变后所得变卦数的函数//
{
	int a=0,b=0,c=0,d=0,e=0,f=0;
	int t;
		
	if(*m==1)
	{
		a=b=c=0;
	}
	if(*m==2)
	{
		a=1;
		b=c=0;
	}
	if(*m==3)
	{
		a=c=0;
		b=1;
	}
	if(*m==4)
	{
		a=b=1;
		c=0;
	}
	if(*m==5)
	{
		a=b=0;
		c=1;
	}
	if(*m==6)
	{
		a=c=1;
		b=0;
	}
	if(*m==7)
	{
		b=c=1;
		a=0;
	}
	if(*m==8)
	{
		a=b=c=1;
	}
	if(*n==1)
	{
		d=e=f=0;
	}
	if(*n==2)
	{
		d=1;
		e=f=0;
	}
	if(*n==3)
	{
		d=f=0;
		e=1;
	}
	if(*n==4)
	{
		d=e=1;
		f=0;
	}
	if(*n==5)
	{
		d=e=0;
		f=1;
	}
	if(*n==6)
	{
		d=f=1;
		e=0;
	}
	if(*n==7)
	{
		e=f=1;
		d=0;
	}
	if(*n==8)
	{
		d=e=f=1;
	}
	int x[6]={a,b,c,d,e,f};
	t=x[6-y];
	if(t==1)
		x[6-y]=0;
	else
		x[6-y]=1;
	*m=x[2]*2*2+x[1]*2+x[0]+1;
	*n=x[5]*2*2+x[4]*2+x[3]+1;


}

void bpt_sf(int *m,int *n)   //求旁通的函数//
{
	int a=0,b=0,c=0,d=0,e=0,f=0;
		
	if(*m==1)
	{
		a=b=c=0;
	}
	if(*m==2)
	{
		a=1;
		b=c=0;
	}
	if(*m==3)
	{
		a=c=0;
		b=1;
	}
	if(*m==4)
	{
		a=b=1;
		c=0;
	}
	if(*m==5)
	{
		a=b=0;
		c=1;
	}
	if(*m==6)
	{
		a=c=1;
		b=0;
	}
	if(*m==7)
	{
		b=c=1;
		a=0;
	}
	if(*m==8)
	{
		a=b=c=1;
	}
	if(*n==1)
	{
		d=e=f=0;
	}
	if(*n==2)
	{
		d=1;
		e=f=0;
	}
	if(*n==3)
	{
		d=f=0;
		e=1;
	}
	if(*n==4)
	{
		d=e=1;
		f=0;
	}
	if(*n==5)
	{
		d=e=0;
		f=1;
	}
	if(*n==6)
	{
		d=f=1;
		e=0;
	}
	if(*n==7)
	{
		e=f=1;
		d=0;
	}
	if(*n==8)
	{
		d=e=f=1;
	}
	int x[6]={a,b,c,d,e,f};
	int i;
	for(i=0;i<6;i++)
	{
		if(x[i]==1)
			x[i]=0;
		else
			x[i]=1;
	}
	*m=x[2]*2*2+x[1]*2+x[0]+1;
	*n=x[5]*2*2+x[4]*2+x[3]+1;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -