diff options
| -rw-r--r-- | xsc.cpp | 76 | ||||
| -rw-r--r-- | xsc_debug.cpp | 27 |
2 files changed, 76 insertions, 27 deletions
@@ -0,0 +1,76 @@ +#include <iostream> +#include <string> +#include <cmath> +using namespace std; + +void usage() { + // Prints usage message (help) + system("figlet XSC | lolcat"); + cout << "\neXtremelySimpleCalculator usage:\n" + << "`xsc --help | -h` for help\n" + << "`xsc <number> <(+|-|*|/|%|^)> <number>` for mathematical operation\n" + << "`xsc -sqrt | -r <number>` for square root operation\n" + << "\n[n!] `xsc` doesn't support mathematical expressions (to-do)\n"; +} + +int main(int argc, char* argv[]) { + // AAAAAAAAAA (a.k.a. argument validation and execution) + for (int i = 1; i < argc; ++i) { + string arg = argv[i]; + + if (arg == "--sqrt" || arg == "-r") { + } + else if (arg == "--help" || arg == "-h") { + usage(); + return 0; + } + else if (i + 2 < argc) { + string op = argv[i + 1]; + double num1 = stod(argv[i]); + double num2 = stod(argv[i + 2]); + double result; + + if (op == "+") { + result = num1 + num2; + } + else if (op == "-") { + result = num1 - num2; + } + else if (op == "*") { + result = num1 * num2; + } + else if (op == "/") { + if (num2 != 0) { + result = num1 / num2; + } + else { + cout << "[math_e!] division by zero!\n"; + usage(); + return 1; + } + } + else if (op == "%") { + result = fmod(num1, num2); + } + else if (op == "^") { + result = pow(num1, num2); + } + else { + cout << "[e!] invalid operator!\n"; + usage(); + return 1; + } + // show result :) + cout << result << "\n"; + return 0; + } + else { + cout << "[e!] invalid input!\n"; + usage(); + return 1; + } + + } + + return 0; +} diff --git a/xsc_debug.cpp b/xsc_debug.cpp deleted file mode 100644 index 16d3745..0000000 --- a/xsc_debug.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include <iostream> -#include <cmath> -using namespace std; - -void usage() { - // Prints usage message (help) - system("figlet XSC | lolcat"); - cout << "\neXtremelySimpleCalculator usage:\n" - << "`xsc --help | -h` for help\n" - << "`xsc <number> <(+|-|*|/|%|^)> <number>`\n"; -} - -int main(int argc, char* argv[]) { - if (argc > 1 && (argv[1] == "--help" || argv[1] == "-h")) { - usage(); - return 0; - } - else { - if (argc > 1 && argv[2][0] == '+') { cout << atof(argv[1]) + atof(argv[3]); } - else if (argv[2][0] == '-') { cout << atof(argv[1]) - atof(argv[3]); } - else if (argv[2][0] == '*') { cout << atof(argv[1]) * atof(argv[3]); } - else if (argv[2][0] == '/') { cout << atof(argv[1]) / atof(argv[3]); } - else if (argv[2][0] == '%') { cout << fmod(atof(argv[1]), atof(argv[3])); } - else if (argv[2][0] == '^') { cout << pow(atof(argv[1]), atof(argv[3])); } - } - return 0; -} |