From da64db914e136f336d79226ae35bfe78cc602f05 Mon Sep 17 00:00:00 2001 From: Leon Wilzer Date: Mon, 14 Nov 2022 12:41:19 +0100 Subject: [PATCH] idk --- src/sheet03.cpp | 107 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 99 insertions(+), 8 deletions(-) diff --git a/src/sheet03.cpp b/src/sheet03.cpp index 55a6435..7402b1a 100644 --- a/src/sheet03.cpp +++ b/src/sheet03.cpp @@ -1,11 +1,13 @@ #include #include +#include +#include #include "../headers/MyType.h" -int calculate(const char &argv) -{ - -} +double calculate(int argc, char **argv); +void pol2cart(double r, double phi, double &x, double &y); +void pascal(int argc, char **argv); +void pascal_mem(int argc, char **argv); int main(int argc, char **argv) { @@ -16,9 +18,98 @@ int main(int argc, char **argv) MyType mj(std::move(j)); MyType maj("jj", 69); maj = std::move(cj); - if(argc == 4) - { - calculate(argv); - } + std::cout << calculate(argc, argv) << '\n'; + double x = 0; + double y = 0; + pol2cart(0.5, 0, x, y); + std::cout << x << " " << y << '\n'; + pascal(argc, argv); return 0; } + +double calculate(int argc, char **argv) +{ + if(argc != 4) + { + return std::nan(""); + } + + switch(argv[2][0]) + { + case '+': + return std::stod(argv[1]) + std::stod(argv[3]); + case '-': + return std::stod(argv[1]) - std::stod(argv[3]); + case 'x': + return std::stod(argv[1]) * std::stod(argv[3]); + case '/': + return std::stod(argv[1]) / std::stod(argv[3]); + default: + std::cout << "Invalid operand: " << argv[2][0] << '\n'; + return std::nan(""); + } +} + +void pol2cart(double r, double phi, double &x, double &y) +{ + x = r * cos(phi); + y = r * sin(phi); +} + +void pascal(int argc, char **argv) +{ + if (argc != 2 || std::stol(argv[1]) == 0) { return; } + + unsigned depth = std::stol(argv[1]); + + std::vector> pascal(depth+1, std::vector(depth+1,0)); + pascal[1][1] = 1; + for(unsigned long long y=2; y pascal(depth,0); + pascal[0] = 1; + for(unsigned long long i=1; i