diff --git a/Others/pascal_triangle.cpp b/Others/pascal_triangle.cpp new file mode 100644 index 000000000..b6f762d97 --- /dev/null +++ b/Others/pascal_triangle.cpp @@ -0,0 +1,63 @@ +#include + +using namespace std; + +void show_pascal(int **arr, int n) +{ + //pint Pascal's Triangle + for (int i = 0; i < n; ++i) + { + for (int j = 0; j < n + i; ++j) + { + if (arr[i][j] == 0) + cout << " "; + else + cout << arr[i][j]; + } + cout << endl; + } +} + +int **pascal_triangle(int **arr, int n) +{ + for (int i = 0; i < n; ++i) + { + for (int j = n - i - 1; j < n + i; ++j) + { + if (j == n - i - 1 || j == n + i - 1) + arr[i][j] = 1; //The edge of the Pascal triangle goes in 1 + else + arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j + 1]; + } + } + + return arr; +} + +int main() +{ + int n = 0; + + cout << "Set Pascal's Triangle Height" << endl; + cin >> n; + + //memory allocation (Assign two-dimensional array to store Pascal triangle) + int **arr = new int*[n]; + for (int i = 0; i < n; ++i) + { + arr[i] = new int[2 * n - 1]; + memset(arr[i], 0, sizeof(int)*(2 * n - 1)); + } + + pascal_triangle(arr, n); + show_pascal(arr, n); + + //deallocation + for (int i = 0; i < n; ++i) + { + delete[] arr[i]; + } + delete[] arr; + + return 0; +}