From 9c55ecbe8d9b73139de6e6ff4db771e4cb65e0c3 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:08:05 +0100 Subject: [PATCH] refactoring: function-prototypes --- src/main/c/Calculator/calculator.c | 465 +++++++++++++-------------- src/main/c/Calculator/calculator.exe | Bin 0 -> 68117 bytes 2 files changed, 226 insertions(+), 239 deletions(-) create mode 100644 src/main/c/Calculator/calculator.exe diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index b6f0037..78def37 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -1,264 +1,251 @@ #include #include -// Function prototypes + // Function prototypes void displayMenu(); -double add(double num1, double num2); -double subtract(double num1, double num2); -double multiply(double num1, double num2); -double divide(double num1, double num2); -double exponent(double base, double exponent); -double modulus(double num1, double num2); -double logarithm(double num); -double potential(double base, double exponent); -double squareRoot(double num); -double square(double num); -double sine(double angle); -double cosine(double angle); -double tangent(double angle); +double performOperation(int choice, double num1, double num2); +double getDoubleInput(const char *message); +int getIntInput(const char *message); +double factorial(double num); double permutation(int n, int r); double combination(int n, int r); -double factorial(double num); -double power(double base, double exponent); -double cube(double num); -double cubeRoot(double num); - -int main() { - double num1, num2, result, angle; - int choice,r,n; - do { - displayMenu(); - printf("Enter your choice: "); - scanf("%d", &choice); - switch (choice) { - case 1: - printf("Enter two numbers: "); - scanf("%lf %lf", &num1, &num2); - result = add(num1, num2); - printf("Result: %lf\n", result); - break; - case 2: - printf("Enter two numbers: "); - scanf("%lf %lf", &num1, &num2); - result = subtract(num1, num2); - printf("Result: %lf\n", result); - break; - case 3: - printf("Enter two numbers: "); - scanf("%lf %lf", &num1, &num2); - result = multiply(num1, num2); - printf("Result: %lf\n", result); - break; - case 4: - printf("Enter two numbers: "); - scanf("%lf %lf", &num1, &num2); - if (num2 == 0) { - printf("Error: Division by zero\n"); - } else { - result = divide(num1, num2); + int main() { + double num1, num2, result, angle; + int choice,r,n; + + do { + displayMenu(); + printf("Enter your choice: "); + scanf("%d", &choice); + switch (choice) { + case 1: + printf("Enter two numbers: "); + scanf("%lf %lf", &num1, &num2); + result = add(num1, num2); + printf("Result: %lf\n", result); + break; + case 2: + printf("Enter two numbers: "); + scanf("%lf %lf", &num1, &num2); + result = subtract(num1, num2); + printf("Result: %lf\n", result); + break; + case 3: + printf("Enter two numbers: "); + scanf("%lf %lf", &num1, &num2); + result = multiply(num1, num2); + printf("Result: %lf\n", result); + break; + case 4: + printf("Enter two numbers: "); + scanf("%lf %lf", &num1, &num2); + if (num2 == 0) { + printf("Error: Division by zero\n"); + } else { + result = divide(num1, num2); + printf("Result: %lf\n", result); + } + break; + case 5: + printf("Enter base and exponent: "); + scanf("%lf %lf", &num1, &num2); + result = exponent(num1, num2); + printf("Result: %lf\n", result); + break; + case 6: + printf("Enter two numbers: "); + scanf("%lf %lf", &num1, &num2); + result = modulus(num1, num2); + printf("Result: %lf\n", result); + break; + case 7: + printf("Enter a number: "); + scanf("%lf", &num1); + result = logarithm(num1); + printf("Result: %lf\n", result); + break; + case 8: + printf("Enter base and exponent: "); + scanf("%lf %lf", &num1, &num2); + result = potential(num1, num2); printf("Result: %lf\n", result); - } - break; - case 5: - printf("Enter base and exponent: "); - scanf("%lf %lf", &num1, &num2); - result = exponent(num1, num2); - printf("Result: %lf\n", result); - break; - case 6: - printf("Enter two numbers: "); - scanf("%lf %lf", &num1, &num2); - result = modulus(num1, num2); - printf("Result: %lf\n", result); - break; - case 7: - printf("Enter a number: "); - scanf("%lf", &num1); - result = logarithm(num1); - printf("Result: %lf\n", result); - break; - case 8: - printf("Enter base and exponent: "); - scanf("%lf %lf", &num1, &num2); - result = potential(num1, num2); - printf("Result: %lf\n", result); - break; - case 9: - printf("Enter a number: "); - scanf("%lf", &num1); - result = squareRoot(num1); - printf("Result: %lf\n", result); - break; - case 10: - printf("Enter a number: "); - scanf("%lf", &num1); - result = square(num1); - printf("Result: %lf\n", result); - break; - case 11: - printf("Enter angle in degrees: "); - scanf("%lf", &angle); - result = sine(angle); - printf("Sine of %.2lf degrees: %lf\n", angle, result); - break; - case 12: - printf("Enter angle in degrees: "); - scanf("%lf", &angle); - result = cosine(angle); - printf("Cosine of %.2lf degrees: %lf\n", angle, result); - break; - case 13: - printf("Enter angle in degrees: "); - scanf("%lf", &angle); - result = tangent(angle); - printf("Tangent of %.2lf degrees: %lf\n", angle, result); - break; - case 14: - printf("Enter n and r: "); - scanf("%d %d", &n, &r); - result = permutation(n, r); - printf("Permutation of %d and %d: %lf\n", n, r, result); - break; - case 15: - printf("Enter n and r: "); - scanf("%d %d", &n, &r); - result = combination(n, r); - printf("Combination of %d and %d: %lf\n", n, r, result); - break; - case 16: - printf("Enter a number: "); - scanf("%lf", &num1); - result = cube(num1); - printf("Result: %lf\n", result); - break; - case 17: - printf("Enter a number: "); - scanf("%lf", &num1); - result = cubeRoot(num1); - printf("Result: %lf\n", result); - break; - case 18: - printf("Enter a number: "); - scanf("%lf", &num1); - result = factorial(num1); - printf("Result: %lf\n", result); - break; - case 19: - printf("Enter base and exponent: "); - scanf("%lf %lf", &num1, &num2); - result = power(num1, num2); - printf("Result: %lf\n", result); - break; - case 20: - printf("Exiting...\n"); - break; - default: - printf("Invalid choice\n"); + break; + case 9: + printf("Enter a number: "); + scanf("%lf", &num1); + result = squareRoot(num1); + printf("Result: %lf\n", result); + break; + case 10: + printf("Enter a number: "); + scanf("%lf", &num1); + result = square(num1); + printf("Result: %lf\n", result); + break; + case 11: + printf("Enter angle in degrees: "); + scanf("%lf", &angle); + result = sine(angle); + printf("Sine of %.2lf degrees: %lf\n", angle, result); + break; + case 12: + printf("Enter angle in degrees: "); + scanf("%lf", &angle); + result = cosine(angle); + printf("Cosine of %.2lf degrees: %lf\n", angle, result); + break; + case 13: + printf("Enter angle in degrees: "); + scanf("%lf", &angle); + result = tangent(angle); + printf("Tangent of %.2lf degrees: %lf\n", angle, result); + break; + case 14: + printf("Enter n and r: "); + scanf("%d %d", &n, &r); + result = permutation(n, r); + printf("Permutation of %d and %d: %lf\n", n, r, result); + break; + case 15: + printf("Enter n and r: "); + scanf("%d %d", &n, &r); + result = combination(n, r); + printf("Combination of %d and %d: %lf\n", n, r, result); + break; + case 16: + printf("Enter a number: "); + scanf("%lf", &num1); + result = cube(num1); + printf("Result: %lf\n", result); + break; + case 17: + printf("Enter a number: "); + scanf("%lf", &num1); + result = cubeRoot(num1); + printf("Result: %lf\n", result); + break; + case 18: + printf("Enter a number: "); + scanf("%lf", &num1); + result = factorial(num1); + printf("Result: %lf\n", result); + break; + case 19: + printf("Enter base and exponent: "); + scanf("%lf %lf", &num1, &num2); + result = power(num1, num2); + printf("Result: %lf\n", result); + break; + case 20: + printf("Exiting...\n"); + break; + default: + printf("Invalid choice\n"); + } } - } - while (choice != 20); + while (choice != 20); - return 0; - } -// Function definitions -void displayMenu() { - printf("\nAdvaced Calculator\n"); - printf("1. Add\n"); - printf("2. Subtract\n"); - printf("3. Multiply\n"); - printf("4. Divide\n"); - printf("5. Exponentiation\n"); - printf("6. Modulus\n"); - printf("7. Logarithm\n"); - printf("8. Potential\n"); - printf("9. Square Root\n"); - printf("10. Square\n"); - printf("11. Cube\n"); - printf("12. Cube Root\n"); - printf("13. Factorial\n"); - printf("14. Power\n"); - printf("15. Sine\n"); - printf("16. Cosine\n"); - printf("17. Tangent\n"); - printf("18. Permutation\n"); - printf("19. Combination\n"); - printf("20. Exit\n"); -} -double add(double num1, double num2) { - return num1 + num2; -} + return 0; + } + // Function definitions + void displayMenu() { + printf("\nAdvaced Calculator\n"); + printf("1. Add\n"); + printf("2. Subtract\n"); + printf("3. Multiply\n"); + printf("4. Divide\n"); + printf("5. Exponentiation\n"); + printf("6. Modulus\n"); + printf("7. Logarithm\n"); + printf("8. Potential\n"); + printf("9. Square Root\n"); + printf("10. Square\n"); + printf("11. Cube\n"); + printf("12. Cube Root\n"); + printf("13. Factorial\n"); + printf("14. Power\n"); + printf("15. Sine\n"); + printf("16. Cosine\n"); + printf("17. Tangent\n"); + printf("18. Permutation\n"); + printf("19. Combination\n"); + printf("20. Exit\n"); + } + double add(double num1, double num2) { + return num1 + num2; + } -double subtract(double num1, double num2) { - return num1 - num2; -} -double multiply(double num1, double num2) { - return num1 * num2; -} -double divide(double num1, double num2) { - return num1 / num2; -} + double subtract(double num1, double num2) { + return num1 - num2; + } + double multiply(double num1, double num2) { + return num1 * num2; + } + double divide(double num1, double num2) { + return num1 / num2; + } -double exponent(double base, double exponent) { - return pow(base, exponent); -} + double exponent(double base, double exponent) { + return pow(base, exponent); + } -double modulus(double num1, double num2) { - return fmod(num1, num2); -} + double modulus(double num1, double num2) { + return fmod(num1, num2); + } -double logarithm(double num) { - return log(num); -} + double logarithm(double num) { + return log(num); + } -double potential(double base, double exponent) { - return pow(base, exponent); -} -double squareRoot(double num) { - return sqrt(num); -} + double potential(double base, double exponent) { + return pow(base, exponent); + } + double squareRoot(double num) { + return sqrt(num); + } -double square(double num) { - return num * num; -} + double square(double num) { + return num * num; + } -double cube(double num) { - return num * num * num; -} + double cube(double num) { + return num * num * num; + } -double cubeRoot(double num) { - return cbrt(num); -}double factorial(double num) { - if (num == 0) { - return 1; - } else { - return num * factorial(num - 1); + double cubeRoot(double num) { + return cbrt(num); + }double factorial(double num) { + if (num == 0) { + return 1; + } else { + return num * factorial(num - 1); + } } -} -double power(double base, double exponent) { - return pow(base, exponent); -} + double power(double base, double exponent) { + return pow(base, exponent); + } -double sine(double angle) { - return sin(angle * M_PI / 180.0); -} + double sine(double angle) { + return sin(angle * M_PI / 180.0); + } -double cosine(double angle) { - return cos(angle * M_PI / 180.0); -} + double cosine(double angle) { + return cos(angle * M_PI / 180.0); + } -double tangent(double angle) { - return tan(angle * M_PI / 180.0); -} -double permutation(int n, int r) { - int result = 1; - for (int i = 0; i < r; i++) { - result *= (n - i); + double tangent(double angle) { + return tan(angle * M_PI / 180.0); + } + double permutation(int n, int r) { + int result = 1; + for (int i = 0; i < r; i++) { + result *= (n - i); + } + return result; } - return result; -} -double combination(int n, int r) { - return permutation(n, r) / factorial(r); -} \ No newline at end of file + double combination(int n, int r) { + return permutation(n, r) / factorial(r); + } \ No newline at end of file diff --git a/src/main/c/Calculator/calculator.exe b/src/main/c/Calculator/calculator.exe new file mode 100644 index 0000000000000000000000000000000000000000..4ea5db50279230fc26f4bb588fc4b025bb28d412 GIT binary patch literal 68117 zcmeFa3w%`7wLiWm$%F|IW_SdHf{Yk2D1-z8f`Vqq49v)c#5^D>buuKAN6lkQW*{Kd zV3O)|Oq;gUYPGjmt+lP~kKXz~YkLz=!B>lDz2GxiYbRngaurdz=Ko!L?{m(aoDeYA zd;h=t|Mz@yX7ByoYp=ET+G{_~K93Y!+07CeV@Ws%2N~Oqkd8e5JMvE(vM0=ZbOL)I z<+*cqo4n7RQ(9ZsVh=Vq)inDX?3Mn;#-@;cW5C`VZnW1m+MR_Z_J*daKvrt%*bK?K z$i-OIH?8c?H|!0tTNwMHnXv(O9vhdCa5h^Gq7695GS)W*p^XaV(T|8H2)!w3W=PPH zXX4r5wO)mhe=LK%1adztR2`7h;+|!na!=cBfZw|8$%ww2Xp;@J;QzsUj1s z-`qMlI2gV8I1)JrJD;-tU{8N75O-JV+%#~Uf*&cRy)^{#HOO>E+hUyF)!9P@E(B(@ z&r;N_6E*dAng4V>^zKUgGY?V^Ac(Sv`97XB-$g;hnPCTg8t9!-ORN*E+l{&{McvvU ziaE+0rDf~amAJRRcN>ZBc_bBqyQ>t%BLDs$?q9j1D>8Xus|&U0d<;emxT8t4srlW} z85>}-oPW5ZL5nv!`*+R+bVeQC4h(m+3F^#013q8=hyNEcF5KBLc=Y97-2M1%%E`jlXK85nlMLgg9<~IR74m{^6 z!8$zsh)?myj)S3j?Qfbw=W$1HxA&N=582v2vtR#?BeLJoK45D5Y?j07+<)ZlYTi;E z2g4JOoT>RUNN*S?iy?2o9WmEIo-;ZIZ5*0<%$c#lw4268Yv+gfjhK&M;Em2O!wSx> zN>f4Q+n(OH6TOi)W0x(4C0;>uyt$34^~CjSy7C8eUh#I#d%{BHMSHrV<7dV`z#!x9 z3Yy%J4`Y*2%oBlJ=M2<&%1n2p*WJF?68jI(c$U2u{?lb$&e_M^`@n+O&Tj|z*eWYG z(50mmq}2k7rZ$sUm_B0jM$KhBk+zPABj_U0)Qb^~n3v%fZql(A%%W-MQtDuMTE8Z0`Po%h`@ZJb;P~2J>%-2BiheU3UDyxqF%44xK;2HbK?0*6=Fqh*?;NqK29@R|BHNR$YXmYt^{T7$lsu2 zQLG*PIQA)45-9P*%Mkx;A;n#2p`@Qm{+cr@i-F;QCvrgWyoz$#k#p2)bH&_I*Fd#3bAPql z+Sn7@3Li!6`W|=0bsYHx^y4~C5UG<%MaxmNe}Pc>a}R*k!%6v=a%K!KW$DOL_E6EI zm@xaFO6G?70Re9UaCZ%<%XcW}VdM-`mt#d(R(dFtBc7B|o9fE70u(M^1-p*xxFjHJtr-1@v!t>Q0j09BVX~F7NVs!Ens1>i6Mt#U#gkTwAEb-6(P78?f}ZDD?x*a>!hgPdV2hXP7bLu8~F9sAwLEI1?h~ zP{q%u)Oe)MrPOq!%TYJSgG;ivL2yt0?~CIQ+XJ&iQwWcpcGf5%F4zH^kBVMZAXavN(EA9KJ%t zxvU%!uO#}}aq($!^r<3#4bhkorzM$PnBu5)qRWP#f^=#I#L8Xi++}DS>NyF`hSQ+A z;xuTkHqu~~X4mVKPRk{(TOu0Tbwh9L4_H$V5j_lF)rI1$lRV=T%0O5FT+U{G+d;yv=tVrWkH@d> zjh#2^bc_EiuJ~O_@!L*f^mvO2>D6(?H!8({JLja*ZIJ?7q%3`(>x2p8%0Aa|8eNV| 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 Wc!pXe?1+&sCT)ls9C{epTk