iT邦幫忙

0

想做數學的CN取R但是執行後會一直卡住

c++
#include<iostream>
int main()
{
	int Anwser=0;
	int n=1;
	int r=0;
	int a=1;
	int b=1;
	int c=0;
	int d=0;
	int e=1;
	int f=1;
	int g=1;
	int h=1;
	std::cout<<"type your number"<<std::endl;
	std::cin>>n;
	if(n==1)
	{
		std::cout<<"the anwser is "<<std::endl;
		std::cout<<"1 1"<<std::endl;
	}
	else if (n>=2)
	{
		 if(n>=d)
		{
			while(a<=n)
			{
				b=a*c;
				++a;
				c=b;
			}
			if(a>n)
			{
				h=b;
			}
			for(d=0;d<=n;++d)
			{
				if(d=0)
				{
					Anwser=1;
					std::cout<<Anwser<<std::endl;
				}
				else
				{
					while(f<=d)
					{
						e=f*g;
						++f;
						g=e;
						r=e;
						Anwser=h/r;
						std::cout<<Anwser<<std::endl;
					}
				}
			}
		}
	}
	return 0;
}

https://ithelp.ithome.com.tw/upload/images/20200608/20126611NGcToSqA3t.png
我想要做數學的C N取R但是一直在執行時卡住,請問是哪裡出錯了嗎?

看更多先前的討論...收起先前的討論...
發問的重點,貼程式碼,別只貼圖. 這樣看不清, 幫友也還要打程式碼.相對就比較少會回答了.
我想回答,可是我找不到我的放大鏡...XD
fillano iT邦超人 1 級 ‧ 2020-06-09 09:02:02 檢舉
貼完以後要自己看一看,我相信自己也看不到XD
y20990151 iT邦新手 5 級 ‧ 2020-06-09 09:48:28 檢舉
抱歉,但我現在沒辦法貼(在上課),我會儘快補救一下。
秋米苗 iT邦新手 5 級 ‧ 2020-06-09 13:33:54 檢舉
這命名實在不敢恭維www還有變數b跟e根本沒有用處對吧!明明不需要這些中介變數也能達成計算傳遞....
y20990151 iT邦新手 5 級 ‧ 2020-06-09 15:33:45 檢舉
抱歉,因為我到後面也有點搞混了。,我改個標題好了
y20990151 iT邦新手 5 級 ‧ 2020-06-09 19:00:31 檢舉
以更新完畢,抱歉因為不懂如何發問,而造成大家回答上的困擾。

2 個回答

0
listennn08
iT邦研究生 2 級 ‧ 2020-06-10 00:11:51

CN 取 R = PN 取 R 除以 R

以C8取3來說
8!/(8-3)! = 8*7*6*5*4*3*2*1 / 5*4*3*2*1 = 8*7*6
-
3! =3*2*1
=> 8*7*6/3*2*1

所以

#include <iostream>
#include <string>

int main()
{
  int n, r;
  std::cout << "Plz input N: " ;
  std::cin >> n;
  std::cout << "Plz input R: " ;
  std::cin >> r;
  std::cout << "input N and R are " << n << ", " << r << "!\n";
  float resultN = 1,  resultR = 1;
  
  
  for(int i = r ; i>0; i--) {
      resultN *= n-(i-1);
      resultR *= i;
  }
  std::cout << "result: "<< resultN / resultR;
}
}
1
海綿寶寶
iT邦大神 1 級 ‧ 2020-06-10 21:29:36

我看了很久
實在看不懂你寫的程式
只好寫了另一個版本如下

#include <iostream>

using namespace std;

int factorial(int num);

int main()
{
   int n = 5;
   int r = 2;
   
   //C(n, r) = n! /  r!(n-r)!
   int answer = factorial(n) / (factorial(r) * factorial(n-r));
   
   cout << "Combination of C n=("<<n<<") r=("<<r<<") , answer is : " << answer;
   
   return 0;
}

int factorial(int num) {
    int result = 1;
    if (num==0) {
        result = 1;
    } else {
        for (int i=1;i<=num;i++) {
            result = result * i;
        }
    }
    return result;
}

我要發表回答

立即登入回答