From e233d3a019dda275d8d790076d25ec92e47b4ffe Mon Sep 17 00:00:00 2001 From: Paulo Custodio Date: Thu, 28 Jan 2021 00:33:56 +0000 Subject: Add Basic, C, C++, Forth, Lua and Python to challenge 003 --- challenge-003/paulo-custodio/cpp/ch-2.cpp | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 challenge-003/paulo-custodio/cpp/ch-2.cpp (limited to 'challenge-003/paulo-custodio/cpp/ch-2.cpp') diff --git a/challenge-003/paulo-custodio/cpp/ch-2.cpp b/challenge-003/paulo-custodio/cpp/ch-2.cpp new file mode 100644 index 0000000000..cf64c51a86 --- /dev/null +++ b/challenge-003/paulo-custodio/cpp/ch-2.cpp @@ -0,0 +1,44 @@ +/* +Challenge 003 + +Challenge #2 +Create a script that generates Pascal Triangle. Accept number of rows from +the command line. The Pascal Triangle should have at least 3 rows. For more +information about Pascal Triangle, check this wikipedia page. + +*/ + +#include +#include +#include + +void draw_pascal(int rows) { + // allocate current and next row + std::vector data[2]; + for (int i = 0; i < 2; i++) + data[i].resize(rows+1); + + int cur = 0; + data[cur][0] = 1; + for (int row = 1; row <= rows; row++) { + // print current row + for (int col = 0; col < rows-row; col++) + std::cout << ' '; + for (int col = 0; col < row; col++) + std::cout << data[cur][col] << ' '; + std::cout << std::endl; + + // compute next row + int nxt = 1-cur; + data[nxt][0] = 1; + data[nxt][row] = 1; + for (int col = 1; col < row; col++) + data[nxt][col] = data[cur][col-1] + data[cur][col]; + cur = nxt; + } +} + +int main(int argc, char* argv[]) { + if (argc == 2) + draw_pascal(atoi(argv[1])); +} -- cgit