------ 文章開始 ------
/* Unlight 戰鬥傷害預測 */ #include <cstdarg> #include <iostream> using namespace std; double pas(int,int);//巴斯卡三角形 double power3(int);//計算2的n次方 double t(double,int,int,int);//計算結果 double power2(int); int main (void) { int a,d,hp,i,j; char again; double a2,d2,c,lethal,cans; cout<<"Unlight damage predict"<<endl; cout<<"Developer: Darthvader"<<endl; do{ cout<<"please input attack value: "; cin>>a; cout<<"please input defense value: "; cin>>d; cout<<"please input critical value(EX:0.05): "; cin>>c; cout<<"please input HP value: "; cin>>hp; a2=power3(a); d2=power3(d); double as[a],ds[d],ans[a+1]; for(i=0;i<=a;i++) as[i]=t(a2,a,i,a-i); for(i=0;i<=d;i++) ds[i]=t(d2,d,i,d-i); for(i=1;i<=a;i++) ans[i]=0; ans[0]=1; for(i=a;i>0;i--) { for(j=0;((i+j)<=a)&&(j<=d);j++)ans[i]+=as[i+j]*ds[j]; ans[0]-=ans[i]; } for(i=0;i<=a;i++) cout<<"v: "<<i<<"\t"<<"p: "<<ans[i]<<endl; cout<<"v=value,p=possibility"<<endl; for(cans=0,i=a;cans<c;i--) cans+=ans[i]; cout<<"damage value is in: "<<i+1<<endl; for(i=0,lethal=0;i<hp;i++) lethal+=ans[i]; cout<<"lethal possibility is: "<<1-lethal<<endl; cout<<"do again?(y/n)"; cin>>again; } while((again!='n')&(again!='N')); return 0; } double pas(int n,int p) { double ans=1; int i; if((n-p)>p) p=n-p;//計算出較大的值 for(i=n;i>p;i--)ans*=i;//算出最小的乘數 for(i=(n-p);i>0;i--)ans/=i;//算出需要除掉的數 return ans; } double power3(int a) { if(a>0) return power3(a-1)*3; else return 1; } double t(double a,int b,int c, int d) { return pas(b,c)/a*power2(d); } double power2(int d) { if(d>0) return power2(d-1)*2; else return 1; } |
------ 文章結尾 ------
[複製網址]
[開新視窗]
[加到我的最愛]
[檢舉短網址]
[QR條碼]
服務條款 - 完全手冊 - 加入會員(免費) - 聯絡偶們 -
© PPT.cc