C++生成PASCAL三角形,输出错误 在C++中生成Pascal三角形有一个问题,同样的算法在java和C++中都很好,它只适用于三角形中的每一行的前两个数,它可以生成大数。例如,在java中,它生成: 1 5 10 10 5 1和C++语言:1 5 1233124 1241241585 32523523500等 以下是代码: #include <cstdlib> #include <iostream> #include <string> #include <cstring> using namespace std; class Pascal { private: int* tab; int prev1; int prev2; public: Pascal(int n) { tab = new int[n+1]; prev1=0; prev2=0; for(int i = 0; i <= n; i++) { for(int k = 0; k <= i; k++) { if (k == 0) { tab[k] = 1; prev2 = 1; } else { prev1 = tab[k-1] + tab[k]; tab[k-1] = prev2; prev2 = prev1; } } } } int wspolczynnik(int m) { return tab[m]; } }; int main (int argc, char* argv[]) { int n = 0, m = 0; n = atoi(argv[1]); // konwersja string na int if (n >= 0) for (int i = 2; i < argc; i++) { Pascal *wiersz = new Pascal(n); m = atoi(argv[i]); int result = wiersz->wspolczynnik(m); if (m < 0 || m > n) cout << m << " - element poza zakresem" << endl; else cout << m << " : " << result << endl; delete[] wiersz; } return 0; }

C++生成PASCAL三角形,输出错误 在C++中生成Pascal三角形有一个问题,同样的算法在java和C++中都很好,它只适用于三角形中的每一行的前两个数,它可以生成大数。例如,在java中,它生成: 1 5 10 10 5 1和C++语言:1 5 1233124 1241241585 32523523500等 以下是代码: #include <cstdlib> #include <iostream> #include <string> #include <cstring> using namespace std; class Pascal { private: int* tab; int prev1; int prev2; public: Pascal(int n) { tab = new int[n+1]; prev1=0; prev2=0; for(int i = 0; i <= n; i++) { for(int k = 0; k <= i; k++) { if (k == 0) { tab[k] = 1; prev2 = 1; } else { prev1 = tab[k-1] + tab[k]; tab[k-1] = prev2; prev2 = prev1; } } } } int wspolczynnik(int m) { return tab[m]; } }; int main (int argc, char* argv[]) { int n = 0, m = 0; n = atoi(argv[1]); // konwersja string na int if (n >= 0) for (int i = 2; i < argc; i++) { Pascal *wiersz = new Pascal(n); m = atoi(argv[i]); int result = wiersz->wspolczynnik(m); if (m < 0 || m > n) cout << m << " - element poza zakresem" << endl; else cout << m << " : " << result << endl; delete[] wiersz; } return 0; },c++,pascals-triangle,C++,Pascals Triangle,查看初始化选项卡数组是否有帮助: tab=新整数[n+1] 这里的“pascal”标记指的是编程语言,而不是三角形。在使用标签之前,请阅读标签说明,以确保您使用的标签与您的问题实际相关。这有助于他们找到能够回答问题的人,并对他们进行适当分类,以便以后在搜索中使用。谢谢-

查看初始化选项卡数组是否有帮助:

tab=新整数[n+1]


这里的“pascal”标记指的是编程语言,而不是三角形。在使用标签之前,请阅读标签说明,以确保您使用的标签与您的问题实际相关。这有助于他们找到能够回答问题的人,并对他们进行适当分类,以便以后在搜索中使用。谢谢-