From 666f9e85893e9bea8adf5b4e39942a03efdb2caf Mon Sep 17 00:00:00 2001 From: fdai7899 Date: Thu, 18 Jan 2024 13:50:35 +0100 Subject: [PATCH 01/72] Quiz 1. Version --- src/main/c/Quiz/top.c | 56 +++++++++++++++++++++++++++++++++++++++++++ src/main/c/Quiz/top.h | 6 +++++ src/main/c/main.c | 7 +++--- 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 src/main/c/Quiz/top.c create mode 100644 src/main/c/Quiz/top.h diff --git a/src/main/c/Quiz/top.c b/src/main/c/Quiz/top.c new file mode 100644 index 0000000..79faa0f --- /dev/null +++ b/src/main/c/Quiz/top.c @@ -0,0 +1,56 @@ +#include +#include +#include + +// Struktur für eine Frage im Quiz +struct Frage { + char text[100]; + char antwort1[50]; + char antwort2[50]; + char antwort3[50]; + int korrekteAntwort; +}; + +// Funktion, um eine Frage zu erstellen +struct Frage erstelleFrage(char *text, char *antwort1, char *antwort2, char *antwort3, int korrekteAntwort) { + struct Frage frage; + strcpy(frage.text, text); + strcpy(frage.antwort1, antwort1); + strcpy(frage.antwort2, antwort2); + strcpy(frage.antwort3, antwort3); + frage.korrekteAntwort = korrekteAntwort; + return frage; +} + +// Funktion, um eine Frage anzuzeigen und die Antwort des Benutzers zu überprüfen +int zeigeFrage(struct Frage frage) { + printf("%s\n", frage.text); + printf("1. %s\n", frage.antwort1); + printf("2. %s\n", frage.antwort2); + printf("3. %s\n", frage.antwort3); + + int benutzerAntwort; + printf("Deine Antwort (1, 2 oder 3): "); + scanf("%d", &benutzerAntwort); + + return (benutzerAntwort == frage.korrekteAntwort); +} + +int quiz() { + struct Frage fragen[3]; + fragen[0] = erstelleFrage("Was ist die Hauptstadt von Frankreich?", "Berlin", "Paris", "London", 2); + fragen[1] = erstelleFrage("Welches ist das groesste Saeugetier?", "Elefant", "Wal", "Giraffe", 2); + fragen[2] = erstelleFrage("Wer hat die Relativitaetstheorie entwickelt?", "Isaac Newton", "Albert Einstein", "Galileo Galilei", 2); + fragen[3] = erstelleFrage("Wer ist bundeskanzler?", "", "Thomas Mueller", "Olaf scholz", 2); + // Quiz starten + int punktzahl = 0; + int i; + for (i = 0; i < 4; i++) { + punktzahl +=zeigeFrage(fragen[i]); + + } + // Ergebnis anzeigen + printf("Deine Punktzahl: %d / %d\n", punktzahl, i); + + return 0; +} diff --git a/src/main/c/Quiz/top.h b/src/main/c/Quiz/top.h new file mode 100644 index 0000000..6331180 --- /dev/null +++ b/src/main/c/Quiz/top.h @@ -0,0 +1,6 @@ +#ifndef TOP_H +#define TOP_H + +void quiz(); + +#endif //TOP_H diff --git a/src/main/c/main.c b/src/main/c/main.c index eaf0b17..62ba734 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -3,6 +3,7 @@ #include #include "Template/game100.h" +#include "Quiz/top.h" int main(){ bool running = true; @@ -15,7 +16,7 @@ int main(){ printf("Waehlen Sie eine Option:\n"); printf("\t1.Spiel1 starten\n"); printf("\t2.Spiel2 starten\n"); - printf("\t3.Spiel3 starten\n"); + printf("\t3.Quiz starten\n"); printf("\t4.Spiel4 starten\n"); printf("\t100.Template starten\n"); printf("\t6.Exit\n"); @@ -31,7 +32,7 @@ int main(){ //start_game2(); break; case 3: - //start_game3(); + quiz_start(); break; case 4: //start_game4(); @@ -49,4 +50,4 @@ int main(){ } } return 0; -} \ No newline at end of file +} From 5868f967036b0b06772d7472f6b0d49d1b513cdc Mon Sep 17 00:00:00 2001 From: fdai7899 Date: Thu, 18 Jan 2024 14:11:42 +0100 Subject: [PATCH 02/72] fixed faulty function call --- src/main/c/Quiz/top.h | 1 + src/main/c/main.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/Quiz/top.h b/src/main/c/Quiz/top.h index 6331180..ffa37aa 100644 --- a/src/main/c/Quiz/top.h +++ b/src/main/c/Quiz/top.h @@ -2,5 +2,6 @@ #define TOP_H void quiz(); +struct Frage erstelleFrage(char *text, char *antwort1, char *antwort2, char *antwort3, int korrekteAntwort); #endif //TOP_H diff --git a/src/main/c/main.c b/src/main/c/main.c index 62ba734..a7fd28b 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -32,7 +32,7 @@ int main(){ //start_game2(); break; case 3: - quiz_start(); + quiz(); break; case 4: //start_game4(); From e0d6f76bc14ca78340ea2f360333adb909988c99 Mon Sep 17 00:00:00 2001 From: fdai7899 Date: Mon, 5 Feb 2024 15:42:36 +0100 Subject: [PATCH 03/72] pulled main --- src/main/c/Quiz/top.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/c/Quiz/top.c b/src/main/c/Quiz/top.c index 79faa0f..a66ac28 100644 --- a/src/main/c/Quiz/top.c +++ b/src/main/c/Quiz/top.c @@ -54,3 +54,4 @@ int quiz() { return 0; } + From b20975b07595ba109d1105224e4ff9737ad1e8ac Mon Sep 17 00:00:00 2001 From: fdai7899 Date: Mon, 5 Feb 2024 15:50:36 +0100 Subject: [PATCH 04/72] adding structure for Quiz 2 --- src/main/c/Quiz/Quiz_2.c | 11 +++++++++++ src/main/c/Quiz/Quiz_2.h | 6 ++++++ 2 files changed, 17 insertions(+) create mode 100644 src/main/c/Quiz/Quiz_2.c create mode 100644 src/main/c/Quiz/Quiz_2.h diff --git a/src/main/c/Quiz/Quiz_2.c b/src/main/c/Quiz/Quiz_2.c new file mode 100644 index 0000000..471aa57 --- /dev/null +++ b/src/main/c/Quiz/Quiz_2.c @@ -0,0 +1,11 @@ +#include + +int quiz_2() +{ + int secretNumber=5; + int guess; + int guessCount = 0; + int guessLimit = 3; + int outOfGuesses =0; + +} \ No newline at end of file diff --git a/src/main/c/Quiz/Quiz_2.h b/src/main/c/Quiz/Quiz_2.h new file mode 100644 index 0000000..b8a73d3 --- /dev/null +++ b/src/main/c/Quiz/Quiz_2.h @@ -0,0 +1,6 @@ +#ifndef QUIZ_2_H +#define QUIZ_2_H + +void quiz_2(); + +#endif //QUIZ_2_H From 56bc2544989cfae025c98208c6703e0300263eca Mon Sep 17 00:00:00 2001 From: Ulriche Date: Mon, 5 Feb 2024 16:01:35 +0100 Subject: [PATCH 05/72] adding team.md --- team.md | 1 + 1 file changed, 1 insertion(+) diff --git a/team.md b/team.md index bdce5f5..4639a6f 100644 --- a/team.md +++ b/team.md @@ -2,3 +2,4 @@ - Julia Selig, fdai8040 - Ariana Ginju, fdai7775 - Saba Fazlali, fdai7875 +- Ulriche Nguefack, fdai7899 \ No newline at end of file From f7fa60beb135f74f138d79361936073f1a1e14c1 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 16:07:38 +0100 Subject: [PATCH 06/72] rough structure quiz --- src/main/c/Quiz/Quiz_2.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/c/Quiz/Quiz_2.c b/src/main/c/Quiz/Quiz_2.c index 471aa57..f78b26e 100644 --- a/src/main/c/Quiz/Quiz_2.c +++ b/src/main/c/Quiz/Quiz_2.c @@ -8,4 +8,14 @@ int quiz_2() int guessLimit = 3; int outOfGuesses =0; + while (guess != secretNumber && outOfGuesses == 0) + { + } + if (outOfGuesses == 1) + { + printf("Out of guesses"); + }else { + printf("You Win!"); + } + return 0; } \ No newline at end of file From b5bff3fcbedc1648bc7404b219f639b26fc2f88f Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 16:29:16 +0100 Subject: [PATCH 07/72] finished Quiz 2 --- src/main/c/Quiz/Quiz_2.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/c/Quiz/Quiz_2.c b/src/main/c/Quiz/Quiz_2.c index f78b26e..0777a51 100644 --- a/src/main/c/Quiz/Quiz_2.c +++ b/src/main/c/Quiz/Quiz_2.c @@ -10,6 +10,14 @@ int quiz_2() while (guess != secretNumber && outOfGuesses == 0) { + if(guessCount < guessLimit) + { + printf("Enter a number: "); + scanf("%d",&guess); + guessCount++; + } else { + outOfGuesses = 1; + } } if (outOfGuesses == 1) { From 47878b7c75801721bc3bd0ce7e623c91cd4bdb3a Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 19:31:19 +0100 Subject: [PATCH 08/72] starting point --- src/main/c/Calculator/calculator.c | 7 +++++++ src/main/c/Quiz/top.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 src/main/c/Calculator/calculator.c diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c new file mode 100644 index 0000000..b6b6010 --- /dev/null +++ b/src/main/c/Calculator/calculator.c @@ -0,0 +1,7 @@ +#include + +// Function prototypes +void displayMenu(); +int add(int num1, int num2); +int subtract(int num1, int num2); +int multiply(int num1, int num2); \ No newline at end of file diff --git a/src/main/c/Quiz/top.h b/src/main/c/Quiz/top.h index ffa37aa..291481a 100644 --- a/src/main/c/Quiz/top.h +++ b/src/main/c/Quiz/top.h @@ -1,7 +1,7 @@ #ifndef TOP_H #define TOP_H -void quiz(); + struct Frage erstelleFrage(char *text, char *antwort1, char *antwort2, char *antwort3, int korrekteAntwort); #endif //TOP_H From d5740ddb8db648bf897aa1dee768ad9c50bb668d Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 19:35:20 +0100 Subject: [PATCH 09/72] main structure --- src/main/c/Calculator/calculator.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index b6b6010..a8c776a 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -4,4 +4,11 @@ void displayMenu(); int add(int num1, int num2); int subtract(int num1, int num2); -int multiply(int num1, int num2); \ No newline at end of file +int multiply(int num1, int num2); +int divide(int num1, int num2); + +int main() { + int choice, num1, num2, result; + + do { + displayMenu(); \ No newline at end of file From 445e078c606b8e09f7434b5cc3abfd86831e13ac Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 19:45:25 +0100 Subject: [PATCH 10/72] user input --- src/main/c/Calculator/calculator.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index a8c776a..c3dff44 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -11,4 +11,6 @@ int main() { int choice, num1, num2, result; do { - displayMenu(); \ No newline at end of file + displayMenu(); + printf("Enter your choice: "); + scanf("%d", &choice); From 89d310f5c126caa201afc90fd715b93433da3fcc Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 19:52:31 +0100 Subject: [PATCH 11/72] switch entry --- src/main/c/Calculator/calculator.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index c3dff44..871b8b5 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -14,3 +14,4 @@ int main() { displayMenu(); printf("Enter your choice: "); scanf("%d", &choice); +switch (choice) { \ No newline at end of file From beefd7d76e4b1dfebbf1761ee91f5f1f56fc2fd1 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 19:55:48 +0100 Subject: [PATCH 12/72] case 2 entry --- src/main/c/Calculator/calculator.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 871b8b5..86dcaec 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -14,4 +14,16 @@ int main() { displayMenu(); printf("Enter your choice: "); scanf("%d", &choice); -switch (choice) { \ No newline at end of file +switch (choice) { + case 1: + printf("Enter two numbers: "); + scanf("%d %d", &num1, &num2); + result = add(num1, num2); + printf("Result: %d\n", result); + break; + case 2: + printf("Enter two numbers: "); + scanf("%d %d", &num1, &num2); + result = subtract(num1, num2); + printf("Result: %d\n", result); + break; \ No newline at end of file From a5ba79935f04992c6a75128d76fafb7483941bc1 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 19:56:33 +0100 Subject: [PATCH 13/72] case 1 etry --- src/main/c/Calculator/calculator.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 86dcaec..08943bd 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -21,9 +21,4 @@ switch (choice) { result = add(num1, num2); printf("Result: %d\n", result); break; - case 2: - printf("Enter two numbers: "); - scanf("%d %d", &num1, &num2); - result = subtract(num1, num2); - printf("Result: %d\n", result); - break; \ No newline at end of file + \ No newline at end of file From 5d58df90a2baa900aada5d627eb5a5bfafec22b5 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 19:56:59 +0100 Subject: [PATCH 14/72] case 2 entry --- src/main/c/Calculator/calculator.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 08943bd..3e4ed49 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -21,4 +21,9 @@ switch (choice) { result = add(num1, num2); printf("Result: %d\n", result); break; - \ No newline at end of file + case 2: + printf("Enter two numbers: "); + scanf("%d %d", &num1, &num2); + result = subtract(num1, num2); + printf("Result: %d\n", result); + break; \ No newline at end of file From 605d875c9022357c17bf0fe531ca62f571e9c13c Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 19:57:36 +0100 Subject: [PATCH 15/72] case 4 entry --- src/main/c/Calculator/calculator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 3e4ed49..8e3d350 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -26,4 +26,10 @@ switch (choice) { scanf("%d %d", &num1, &num2); result = subtract(num1, num2); printf("Result: %d\n", result); + break; + case 3: + printf("Enter two numbers: "); + scanf("%d %d", &num1, &num2); + result = multiply(num1, num2); + printf("Result: %d\n", result); break; \ No newline at end of file From 6beda42d929adf1b4fd580a9930a7059d4f52883 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:00:16 +0100 Subject: [PATCH 16/72] case 3 entry --- src/main/c/Calculator/calculator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 8e3d350..d92a7be 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -28,7 +28,7 @@ switch (choice) { printf("Result: %d\n", result); break; case 3: - printf("Enter two numbers: "); + printf("#Enter two numbers: "); scanf("%d %d", &num1, &num2); result = multiply(num1, num2); printf("Result: %d\n", result); From 135d7e7ab11910818daa5b263db92a30384a70e7 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:01:15 +0100 Subject: [PATCH 17/72] case 4a entry --- src/main/c/Calculator/calculator.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index d92a7be..c02f69f 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -32,4 +32,14 @@ switch (choice) { scanf("%d %d", &num1, &num2); result = multiply(num1, num2); printf("Result: %d\n", result); + break; + case 4: + printf("Enter two numbers: "); + scanf("%d %d", &num1, &num2); + if (num2 == 0) { + printf("Error: Division by zero\n"); + } else { + result = divide(num1, num2); + printf("Result: %d\n", result); + } break; \ No newline at end of file From 11e253518dafb458df9e36f5822f84e9ef540775 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:01:58 +0100 Subject: [PATCH 18/72] case 5 entry --- src/main/c/Calculator/calculator.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index c02f69f..a25009c 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -42,4 +42,10 @@ switch (choice) { result = divide(num1, num2); printf("Result: %d\n", result); } - break; \ No newline at end of file + break; + case 5: + printf("Exiting...\n"); + break; + default: + printf("Invalid choice\n"); + } \ No newline at end of file From 196c3df18a22e21626f3c219ccfbf24ff83fa4f9 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:02:56 +0100 Subject: [PATCH 19/72] condition ending --- src/main/c/Calculator/calculator.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index a25009c..5ea7709 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -48,4 +48,9 @@ switch (choice) { break; default: printf("Invalid choice\n"); - } \ No newline at end of file + } + } + } while (choice != 5); + + return 0; +} From 34f60deea1e861e9d7e19cd1bbc6e0758bdd915a Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:04:37 +0100 Subject: [PATCH 20/72] display menu operation --- src/main/c/Calculator/calculator.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 5ea7709..2a41295 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -54,3 +54,12 @@ switch (choice) { return 0; } +// Function definitions +void displayMenu() { + printf("\nSimple Calculator\n"); + printf("1. Add\n"); + printf("2. Subtract\n"); + printf("3. Multiply\n"); + printf("4. Divide\n"); + printf("5. Exit\n"); +} \ No newline at end of file From 00dd15d17f06bcb664f901aceb00358bb070cd1e Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:05:34 +0100 Subject: [PATCH 21/72] addition operation --- src/main/c/Calculator/calculator.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 2a41295..4032bbc 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -62,4 +62,7 @@ void displayMenu() { printf("3. Multiply\n"); printf("4. Divide\n"); printf("5. Exit\n"); +} +int add(int num1, int num2) { + return num1 + num2; } \ No newline at end of file From 7becd9e0b05370f23db063e04ff7137437969e28 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:06:37 +0100 Subject: [PATCH 22/72] subtraction operation --- src/main/c/Calculator/calculator.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 4032bbc..954d1da 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -65,4 +65,8 @@ void displayMenu() { } int add(int num1, int num2) { return num1 + num2; +} + +int subtract(int num1, int num2) { + return num1 - num2; } \ No newline at end of file From b0e5940b0e3f4b7ea68f25ba4ae4fa2ed5cf68f0 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:07:12 +0100 Subject: [PATCH 23/72] multiplication operation --- src/main/c/Calculator/calculator.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 954d1da..eb84381 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -69,4 +69,7 @@ int add(int num1, int num2) { int subtract(int num1, int num2) { return num1 - num2; +} +int multiply(int num1, int num2) { + return num1 * num2; } \ No newline at end of file From 27c6bf05102d96910ac542c64b41a45b80b1fefc Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:07:51 +0100 Subject: [PATCH 24/72] division operation --- src/main/c/Calculator/calculator.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index eb84381..b46882a 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -72,4 +72,7 @@ int subtract(int num1, int num2) { } int multiply(int num1, int num2) { return num1 * num2; +} +int divide(int num1, int num2) { + return num1 / num2; } \ No newline at end of file From b5f763109a68e17f3a9a2e714bef8114cd30063e Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:45:46 +0100 Subject: [PATCH 25/72] additional operations --- src/main/c/Calculator/calculator.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index b46882a..a5d66a4 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -6,6 +6,11 @@ int add(int num1, int num2); int subtract(int num1, int num2); int multiply(int num1, int num2); int divide(int num1, int 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); int main() { int choice, num1, num2, result; From bc1e84da3586293f0e8373e666ca59bb898d449f Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:46:22 +0100 Subject: [PATCH 26/72] additional operations1 --- src/main/c/Calculator/calculator.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index a5d66a4..54d4c78 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -11,6 +11,11 @@ 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); + int main() { int choice, num1, num2, result; From 07682736a7d723f6f95d26bdde08c287177aaeb9 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:49:23 +0100 Subject: [PATCH 27/72] start point data type modification --- src/main/c/Calculator/calculator.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 54d4c78..5733aa7 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -2,10 +2,10 @@ // Function prototypes void displayMenu(); -int add(int num1, int num2); -int subtract(int num1, int num2); -int multiply(int num1, int num2); -int divide(int num1, int num2); +double add(int num1, int num2); +double subtract(int num1, int num2); +double multiply(int num1, int num2); +double divide(int num1, int num2); double exponent(double base, double exponent); double modulus(double num1, double num2); double logarithm(double num); @@ -16,9 +16,8 @@ double sine(double angle); double cosine(double angle); double tangent(double angle); - int main() { - int choice, num1, num2, result; + double choice, num1, num2, result, angle; do { displayMenu(); From e0aa1c901879e72cfdea86436b5d86ee55698885 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:52:07 +0100 Subject: [PATCH 28/72] case exponent --- src/main/c/Calculator/calculator.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 5733aa7..da9d5f1 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -23,7 +23,7 @@ int main() { displayMenu(); printf("Enter your choice: "); scanf("%d", &choice); -switch (choice) { + switch (choice) { case 1: printf("Enter two numbers: "); scanf("%d %d", &num1, &num2); @@ -52,7 +52,13 @@ switch (choice) { printf("Result: %d\n", result); } break; - case 5: + case 5: + printf("Enter base and exponent: "); + scanf("%lf %lf", &num1, &num2); + result = exponent(num1, num2); + printf("Result: %lf\n", result); + break; + case : printf("Exiting...\n"); break; default: From e1f9c4c384fa592f4f8a3bf5fb7377195e11ad5d Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:53:11 +0100 Subject: [PATCH 29/72] case modulus --- src/main/c/Calculator/calculator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index da9d5f1..b7f10ce 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -57,6 +57,12 @@ int main() { 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 : printf("Exiting...\n"); From 184a0c01481171a33127db3292e060b93ab0d99a Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:54:13 +0100 Subject: [PATCH 30/72] case logarithm --- src/main/c/Calculator/calculator.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index b7f10ce..7a570bc 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -64,7 +64,13 @@ int main() { result = modulus(num1, num2); printf("Result: %lf\n", result); break; - case : + case 7: + printf("Enter a number: "); + scanf("%lf", &num1); + result = logarithm(num1); + printf("Result: %lf\n", result); + break; + case : printf("Exiting...\n"); break; default: From c0a83ef147d2a261838c0d41cb22bfc83ab11f89 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:55:01 +0100 Subject: [PATCH 31/72] case potential --- src/main/c/Calculator/calculator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 7a570bc..750d788 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -70,6 +70,12 @@ int main() { 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 : printf("Exiting...\n"); break; From 27a55f96381b55aa9ec3e5b991565b0ad2d6393e Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:55:52 +0100 Subject: [PATCH 32/72] case sqaureRoot --- src/main/c/Calculator/calculator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 750d788..b25d868 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -75,6 +75,12 @@ int main() { 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 : printf("Exiting...\n"); From 93a49e367a8acc1a4fbd86c7421ed97b6a77e368 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:57:09 +0100 Subject: [PATCH 33/72] case square --- src/main/c/Calculator/calculator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index b25d868..2cc9319 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -82,6 +82,12 @@ int main() { 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 : printf("Exiting...\n"); break; From 03c628c30a9977e13ba0316df22097d122334866 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 20:58:25 +0100 Subject: [PATCH 34/72] case trigonometry sine angle --- src/main/c/Calculator/calculator.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 2cc9319..6f0b2d2 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -88,6 +88,13 @@ int main() { 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 : printf("Exiting...\n"); break; From faef171c54e445905f5dfd6cefc7e226c92a39ea Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:01:08 +0100 Subject: [PATCH 35/72] case trigonometry cosine angle --- src/main/c/Calculator/calculator.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 6f0b2d2..2384f51 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -94,7 +94,12 @@ int main() { 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 : printf("Exiting...\n"); break; From 056580f551b1af71e538c46799c11d1598563c19 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:02:04 +0100 Subject: [PATCH 36/72] case trigonometry tangent angle --- src/main/c/Calculator/calculator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 2384f51..870f164 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -100,6 +100,12 @@ int main() { 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 : printf("Exiting...\n"); break; From 94cb3f9f66fe521eb5d366b291fb0ac018771bfa Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:21:43 +0100 Subject: [PATCH 37/72] permutation and combination operation --- src/main/c/Calculator/calculator.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 870f164..b130f30 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -15,6 +15,8 @@ double square(double num); double sine(double angle); double cosine(double angle); double tangent(double angle); +double permutation(int n, int r); +double combination(int n, int r); int main() { double choice, num1, num2, result, angle; From 23ba499c1870c3e7674049f84387323623ead0ac Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:22:47 +0100 Subject: [PATCH 38/72] case permutation --- src/main/c/Calculator/calculator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index b130f30..e29d35c 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -107,6 +107,12 @@ int main() { 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 : printf("Exiting...\n"); From e7695dbccaf01e9db5285c0eefe3168c29088d3b Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:23:25 +0100 Subject: [PATCH 39/72] case combination --- src/main/c/Calculator/calculator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index e29d35c..6576a95 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -113,6 +113,12 @@ int main() { scanf("%d %d", &n, &r); result = permutation(n, r); printf("Permutation of %d and %d: %lf\n", n, r, result); + break; + case 19: + 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 : printf("Exiting...\n"); From 3c402bee953cb00fed1c49e842c135b39300ed9f Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:26:14 +0100 Subject: [PATCH 40/72] start point power and factorial operation --- src/main/c/Calculator/calculator.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 6576a95..bfcd8bb 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -17,6 +17,8 @@ double cosine(double angle); double tangent(double angle); double permutation(int n, int r); double combination(int n, int r); +double factorial(double num); +double power(double base, double exponent); int main() { double choice, num1, num2, result, angle; @@ -120,6 +122,7 @@ int main() { result = combination(n, r); printf("Combination of %d and %d: %lf\n", n, r, result); break; + case : printf("Exiting...\n"); break; From 134eedd284d2bbd05bcd2382cc335585dae261d9 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:28:47 +0100 Subject: [PATCH 41/72] start point cube and cubeRoot operation --- src/main/c/Calculator/calculator.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index bfcd8bb..68e1d1f 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -19,6 +19,8 @@ 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 choice, num1, num2, result, angle; From 05f9aa3121498ac23fca42eb0245a32fdc31cab7 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:30:11 +0100 Subject: [PATCH 42/72] case cube --- src/main/c/Calculator/calculator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 68e1d1f..0081007 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -123,6 +123,12 @@ int main() { scanf("%d %d", &n, &r); result = combination(n, r); printf("Combination of %d and %d: %lf\n", n, r, result); + break; + case 11: + printf("Enter a number: "); + scanf("%lf", &num1); + result = cube(num1); + printf("Result: %lf\n", result); break; case : From 6f6c74e65f00a7410311ef53d805cbd006fb72b4 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:31:43 +0100 Subject: [PATCH 43/72] case cubeRoot --- src/main/c/Calculator/calculator.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 0081007..ea55d75 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -130,7 +130,12 @@ int main() { result = cube(num1); printf("Result: %lf\n", result); break; - + case 12: + printf("Enter a number: "); + scanf("%lf", &num1); + result = cubeRoot(num1); + printf("Result: %lf\n", result); + break; case : printf("Exiting...\n"); break; From 118fc2305f71f2d1b39dd49cdd4c5bd9db1f9f6c Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:45:22 +0100 Subject: [PATCH 44/72] Datatype and placeholders reajusted --- src/main/c/Calculator/calculator.c | 52 ++++++++++++++++++------------ 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index ea55d75..c053787 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -2,10 +2,10 @@ // Function prototypes void displayMenu(); -double add(int num1, int num2); -double subtract(int num1, int num2); -double multiply(int num1, int num2); -double divide(int num1, int num2); +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); @@ -30,32 +30,32 @@ int main() { printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { - case 1: + case 1: printf("Enter two numbers: "); - scanf("%d %d", &num1, &num2); + scanf("%lf %lf", &num1, &num2); result = add(num1, num2); - printf("Result: %d\n", result); + printf("Result: %lf\n", result); break; - case 2: + case 2: printf("Enter two numbers: "); - scanf("%d %d", &num1, &num2); + scanf("%lf %lf", &num1, &num2); result = subtract(num1, num2); - printf("Result: %d\n", result); + printf("Result: %lf\n", result); break; - case 3: - printf("#Enter two numbers: "); - scanf("%d %d", &num1, &num2); + case 3: + printf("Enter two numbers: "); + scanf("%lf %lf", &num1, &num2); result = multiply(num1, num2); - printf("Result: %d\n", result); + printf("Result: %lf\n", result); break; case 4: printf("Enter two numbers: "); - scanf("%d %d", &num1, &num2); + scanf("%lf %lf", &num1, &num2); if (num2 == 0) { printf("Error: Division by zero\n"); } else { result = divide(num1, num2); - printf("Result: %d\n", result); + printf("Result: %lf\n", result); } break; case 5: @@ -118,25 +118,37 @@ int main() { result = permutation(n, r); printf("Permutation of %d and %d: %lf\n", n, r, result); break; - case 19: + 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 11: + case 16: printf("Enter a number: "); scanf("%lf", &num1); result = cube(num1); printf("Result: %lf\n", result); break; - case 12: + case 17: printf("Enter a number: "); scanf("%lf", &num1); result = cubeRoot(num1); printf("Result: %lf\n", result); break; - case : + 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: From 4c001aa86d981a5be774922e56779fc0b344786b Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:50:46 +0100 Subject: [PATCH 45/72] additional display menu 1 --- src/main/c/Calculator/calculator.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index c053787..7616c8b 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -24,6 +24,7 @@ double cubeRoot(double num); int main() { double choice, num1, num2, result, angle; + int r,n; do { displayMenu(); @@ -155,18 +156,25 @@ int main() { printf("Invalid choice\n"); } } - } while (choice != 5); + } while (choice != 20); return 0; } // Function definitions void displayMenu() { - printf("\nSimple Calculator\n"); + printf("\nAdvaced Calculator\n"); printf("1. Add\n"); printf("2. Subtract\n"); printf("3. Multiply\n"); printf("4. Divide\n"); - printf("5. Exit\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"); + } int add(int num1, int num2) { return num1 + num2; From 7badfbb83afc117bf63ef33e2cc7cc403b433187 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:51:13 +0100 Subject: [PATCH 46/72] additional display menu 2 --- src/main/c/Calculator/calculator.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 7616c8b..40c1b42 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -174,7 +174,15 @@ void displayMenu() { 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"); } int add(int num1, int num2) { return num1 + num2; From 552010a1f94a4fec551d1425b0fcd567090c68b2 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:57:45 +0100 Subject: [PATCH 47/72] exponent modulus logarithm potential calling --- src/main/c/Calculator/calculator.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 40c1b42..dc61a74 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -184,16 +184,32 @@ void displayMenu() { printf("19. Combination\n"); printf("20. Exit\n"); } -int add(int num1, int num2) { +double add(double num1, double num2) { return num1 + num2; } -int subtract(int num1, int num2) { +double subtract(double num1, double num2) { return num1 - num2; } -int multiply(int num1, int num2) { +double multiply(double num1, double num2) { return num1 * num2; } -int divide(int num1, int num2) { +double divide(double num1, double num2) { return num1 / num2; -} \ No newline at end of file +} + +double exponent(double base, double exponent) { + return pow(base, exponent); +} + +double modulus(double num1, double num2) { + return fmod(num1, num2); +} + +double logarithm(double num) { + return log(num); +} + +double potential(double base, double exponent) { + return pow(base, exponent); +} From 801805c4e6fbc536b35e3e8e19d15352cafb463b Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 21:58:54 +0100 Subject: [PATCH 48/72] squareRoot square cube cubeRoot operations called --- src/main/c/Calculator/calculator.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index dc61a74..6e75e9b 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -213,3 +213,18 @@ double logarithm(double 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 cube(double num) { + return num * num * num; +} + +double cubeRoot(double num) { + return cbrt(num); +} From fd526fbb48f40f55cbd4f17c368bf6943773191c Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 22:01:08 +0100 Subject: [PATCH 49/72] power sine cosine tangent called --- src/main/c/Calculator/calculator.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 6e75e9b..99894eb 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -227,4 +227,26 @@ double cube(double num) { 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 sine(double angle) { + return sin(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); } From 166e12f9a85e781178dac40a56a27d95d806c2cb Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Mon, 5 Feb 2024 22:01:49 +0100 Subject: [PATCH 50/72] permutation and combination called --- src/main/c/Calculator/calculator.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 99894eb..6f0a91d 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -250,3 +250,14 @@ double cosine(double angle) { 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; +} + +double combination(int n, int r) { + return permutation(n, r) / factorial(r); +} \ No newline at end of file From db5a089d4c88ebd0e19a8d2ed0c94b701c834eae Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 11:01:46 +0100 Subject: [PATCH 51/72] adding math.h --- src/main/c/Calculator/calculator.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 6f0a91d..b6f0037 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -1,4 +1,5 @@ #include +#include // Function prototypes void displayMenu(); @@ -23,8 +24,8 @@ double cube(double num); double cubeRoot(double num); int main() { - double choice, num1, num2, result, angle; - int r,n; + double num1, num2, result, angle; + int choice,r,n; do { displayMenu(); @@ -156,10 +157,10 @@ int main() { printf("Invalid choice\n"); } } - } while (choice != 20); + while (choice != 20); return 0; -} + } // Function definitions void displayMenu() { printf("\nAdvaced Calculator\n"); From 9c55ecbe8d9b73139de6e6ff4db771e4cb65e0c3 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:08:05 +0100 Subject: [PATCH 52/72] 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 Date: Wed, 7 Feb 2024 14:11:48 +0100 Subject: [PATCH 53/72] refactoring: top-main --- src/main/c/Calculator/calculator.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 78def37..bd752f3 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -11,8 +11,9 @@ double permutation(int n, int r); double combination(int n, int r); int main() { - double num1, num2, result, angle; - int choice,r,n; + int choice; + double num1, num2, result; + do { displayMenu(); From 4fa18bf349d20000b4c21fd9f75a92523cb1fd26 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:15:05 +0100 Subject: [PATCH 54/72] refactoring: if-statement1 --- src/main/c/Calculator/calculator.c | 137 +++-------------------------- 1 file changed, 12 insertions(+), 125 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index bd752f3..13c4174 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -19,132 +19,19 @@ double combination(int n, int r); 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 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"); + if (choice >= 1 && choice <= 19) { + if (choice >= 9 && choice <= 17) { + num1 = getDoubleInput("Enter a number: "); + } else if (choice >= 1 && choice <= 8) { + printf("Enter two numbers: "); + scanf("%lf %lf", &num1, &num2); + } else if (choice == 18 || choice == 19) { + int n = getIntInput("Enter n: "); + int r = getIntInput("Enter r: "); + num1 = n; + num2 = r; } - } + while (choice != 20); return 0; From 310d9bb3578a686ab667428937570c653392ecb7 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:16:46 +0100 Subject: [PATCH 55/72] refactoring: if-statement2 --- src/main/c/Calculator/calculator.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 13c4174..4f4ea4d 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -31,6 +31,16 @@ double combination(int n, int r); num1 = n; num2 = r; } + if (choice != 4 || (choice == 4 && num2 != 0)) { + result = performOperation(choice, num1, num2); + printf("Result: %.2lf\n", result); + } else { + printf("Error: Division by zero\n"); + } + } else if (choice != 20) { + printf("Invalid choice\n"); + } + } while (choice != 20); From 0bff2a47a8a84741c05330d90011abf3515c5ab0 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:21:48 +0100 Subject: [PATCH 56/72] refactoring: entry-into-switch --- src/main/c/Calculator/calculator.c | 49 ++---------------------------- 1 file changed, 2 insertions(+), 47 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 4f4ea4d..bd6cdf3 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -70,56 +70,11 @@ double combination(int n, int r); 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 exponent(double base, double exponent) { - return pow(base, exponent); - } - - double modulus(double num1, double num2) { - return fmod(num1, num2); - } + double performOperation(int choice, double num1, double num2) { + switch (choice) { - 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 square(double num) { - return 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 power(double base, double exponent) { return pow(base, exponent); From d5c1f9f2f1ba1ee24ad3668922cbf7b1bf344394 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:23:38 +0100 Subject: [PATCH 57/72] refactoring: case(for add and subtract) --- src/main/c/Calculator/calculator.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index bd6cdf3..f7900d9 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -72,6 +72,10 @@ double combination(int n, int r); } double performOperation(int choice, double num1, double num2) { switch (choice) { + case 1: + return num1 + num2; + case 2: + return num1 - num2; From 658eada7b10618d75af9234a27f42e0930bffce4 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:24:54 +0100 Subject: [PATCH 58/72] refactoring: case(for mutiply and division) --- src/main/c/Calculator/calculator.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index f7900d9..06be2f8 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -76,6 +76,10 @@ double combination(int n, int r); return num1 + num2; case 2: return num1 - num2; + case 3: + return num1 * num2; + case 4: + return num1 / num2; From ff572b5e52ea5f88cb653f2b34e572de32f86a23 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:25:49 +0100 Subject: [PATCH 59/72] refactoring: case(for power and modulus) --- src/main/c/Calculator/calculator.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 06be2f8..84165cf 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -80,6 +80,10 @@ double combination(int n, int r); return num1 * num2; case 4: return num1 / num2; + case 5: + return pow(num1, num2); + case 6: + return fmod(num1, num2); From 82a1f2a11b68f233d1741c98fb1331933c513cc2 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:27:00 +0100 Subject: [PATCH 60/72] refactoring: case(for logarithm and pow) --- src/main/c/Calculator/calculator.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 84165cf..9b78f13 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -84,6 +84,10 @@ double combination(int n, int r); return pow(num1, num2); case 6: return fmod(num1, num2); + case 7: + return log(num1); + case 8: + return pow(num1, num2); From ffba03ca7216bafbb9746ff8380c3cfa52502573 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:28:31 +0100 Subject: [PATCH 61/72] refactoring: case(for square root) --- src/main/c/Calculator/calculator.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 9b78f13..bdfbfc2 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -88,7 +88,12 @@ double combination(int n, int r); return log(num1); case 8: return pow(num1, num2); - + case 9: + return sqrt(num1); + case 10: + return num1 * num1; + case 11: + return num1 * num1 * num1; From 2bc2fc8f03ecfec3e204b18d01c627e2cc60a38a Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:29:29 +0100 Subject: [PATCH 62/72] refactoring: case(for cbrt and factorial) --- src/main/c/Calculator/calculator.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index bdfbfc2..056e940 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -93,7 +93,11 @@ double combination(int n, int r); case 10: return num1 * num1; case 11: - return num1 * num1 * num1; + return num1 * num1 * num1; + case 12: + return cbrt(num1); + case 13: + return factorial(num1); From b8e4ec56655a21715c4060f38f73ea21118d41d8 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:30:42 +0100 Subject: [PATCH 63/72] refactoring: case(for pow and sine) --- src/main/c/Calculator/calculator.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 056e940..8b75156 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -97,7 +97,11 @@ double combination(int n, int r); case 12: return cbrt(num1); case 13: - return factorial(num1); + return factorial(num1); + case 14: + return pow(num1, num2); + case 15: + return sin(num1 * M_PI / 180.0); From 1e5c21b444042fd0fb2bea6e183c1b0120f91096 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:35:39 +0100 Subject: [PATCH 64/72] refactoring: case(for cosine and tangent) --- src/main/c/Calculator/calculator.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 8b75156..4cfafd2 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -101,7 +101,12 @@ double combination(int n, int r); case 14: return pow(num1, num2); case 15: - return sin(num1 * M_PI / 180.0); + return sin(num1 * M_PI / 180.0); + case 16: + return cos(num1 * M_PI / 180.0); + case 17: + return tan(num1 * M_PI / 180.0); + From 97c40693c5976d0f3b609620d77755e9b80c7d5c Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:37:23 +0100 Subject: [PATCH 65/72] refactoring: case(for permutation and combination) --- src/main/c/Calculator/calculator.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 4cfafd2..193ed38 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -107,6 +107,14 @@ double combination(int n, int r); case 17: return tan(num1 * M_PI / 180.0); + case 18: + return permutation((int)num1, (int)num2); + case 19: + return combination((int)num1, (int)num2); + default: + return 0.0; + } +} From 2957ef2229781820daca43b1513dec5de869f3ed Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:41:11 +0100 Subject: [PATCH 66/72] refactoring: case(geting user input for both int and double) --- src/main/c/Calculator/calculator.c | 40 +++++++++--------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 193ed38..1ddf5fe 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -115,32 +115,16 @@ double combination(int n, int r); return 0.0; } } +double getDoubleInput(const char *message) { + double input; + printf("%s", message); + scanf("%lf", &input); + return input; +} - - - double power(double base, double exponent) { - return pow(base, exponent); - } - - double sine(double angle) { - return sin(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); - } - return result; - } - - double combination(int n, int r) { - return permutation(n, r) / factorial(r); - } \ No newline at end of file +int getIntInput(const char *message) { + int input; + printf("%s", message); + scanf("%d", &input); + return input; +} From c94eefc9126c724caad3b2d9d23fc560f26bad71 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:42:24 +0100 Subject: [PATCH 67/72] refactoring: factorial --- src/main/c/Calculator/calculator.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 1ddf5fe..8d4cdc8 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -121,6 +121,13 @@ double getDoubleInput(const char *message) { scanf("%lf", &input); return input; } +double factorial(double num) { + if (num == 0) { + return 1; + } else { + return num * factorial(num - 1); + } +} int getIntInput(const char *message) { int input; From d8e8de918d537e3bf762246c4eb9d32cf00d3c66 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Wed, 7 Feb 2024 14:44:24 +0100 Subject: [PATCH 68/72] refactoring: ending-permutation|combination --- src/main/c/Calculator/calculator.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 8d4cdc8..5110e69 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -128,6 +128,17 @@ double factorial(double num) { return num * factorial(num - 1); } } +double permutation(int n, int r) { + double result = 1; + for (int i = 0; i < r; i++) { + result *= (n - i); + } + return result; +} + +double combination(int n, int r) { + return permutation(n, r) / factorial(r); +} int getIntInput(const char *message) { int input; From 66b907eac2aff6eb3229a86f4e223f1ad01313f6 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Fri, 9 Feb 2024 09:28:04 +0100 Subject: [PATCH 69/72] refactoring: pow --- src/main/c/Calculator/calculator.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/c/Calculator/calculator.c b/src/main/c/Calculator/calculator.c index 5110e69..abf70e0 100644 --- a/src/main/c/Calculator/calculator.c +++ b/src/main/c/Calculator/calculator.c @@ -1,5 +1,6 @@ #include -#include +#define M_PI 3.14159265358979323 + // Function prototypes void displayMenu(); @@ -9,6 +10,7 @@ int getIntInput(const char *message); double factorial(double num); double permutation(int n, int r); double combination(int n, int r); +double pow(double num1, int num2); int main() { int choice; @@ -146,3 +148,11 @@ int getIntInput(const char *message) { scanf("%d", &input); return input; } + +double pow(double num1, int num2){ + double product = 1; + for(int i = 0; i < num2; ){ + product *= num1; + } + return product; +} \ No newline at end of file From f2fed0c2caa6799d1f77898e1e888a2aa485339e Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Fri, 9 Feb 2024 09:57:46 +0100 Subject: [PATCH 70/72] Test pow --- And | 0 Shell | 0 build/release/dependencies/force_build | 0 build/release/dependencies/top.d | 1 + build/release/out/c/top.o | Bin 0 -> 6112 bytes build/test/cache/defines_dependency.yml | 2 + build/test/cache/input.yml | 12 +-- build/test/cache/test_add.c | 49 +++++++++++ build/test/cache/test_template.c | 2 +- build/test/dependencies/calculator.d | 1 + build/test/dependencies/force_build | 0 build/test/dependencies/test_add.d | 4 + build/test/dependencies/test_add_runner.d | 3 + .../test/dependencies/test_template_runner.d | 4 +- build/test/out/c/calculator.o | Bin 0 -> 12240 bytes build/test/out/c/test_add.o | Bin 0 -> 6144 bytes build/test/out/c/test_add_runner.o | Bin 0 -> 9104 bytes build/test/out/c/test_template_runner.o | Bin 11176 -> 9336 bytes build/test/out/test_add.out | Bin 0 -> 64792 bytes build/test/out/test_template.out | Bin 66752 -> 65512 bytes build/test/preprocess/files/test_add.c | 49 +++++++++++ build/test/preprocess/files/test_template.c | 2 +- build/test/preprocess/includes/test_add.c | 3 + .../test/preprocess/includes/test_template.c | 2 +- build/test/results/test_add.pass | 18 ++++ build/test/results/test_template.pass | 2 +- build/test/runners/test_add_runner.c | 81 ++++++++++++++++++ src/main/c/Calculator/calculator.c | 24 +++--- src/main/c/Calculator/calculator.h | 8 ++ test/Calculator/test_add.c | 26 ++++++ 30 files changed, 269 insertions(+), 24 deletions(-) create mode 100644 And create mode 100644 Shell create mode 100644 build/release/dependencies/force_build create mode 100644 build/release/dependencies/top.d create mode 100644 build/release/out/c/top.o create mode 100644 build/test/cache/test_add.c create mode 100644 build/test/dependencies/calculator.d create mode 100644 build/test/dependencies/force_build create mode 100644 build/test/dependencies/test_add.d create mode 100644 build/test/dependencies/test_add_runner.d create mode 100644 build/test/out/c/calculator.o create mode 100644 build/test/out/c/test_add.o create mode 100644 build/test/out/c/test_add_runner.o create mode 100755 build/test/out/test_add.out create mode 100644 build/test/preprocess/files/test_add.c create mode 100644 build/test/preprocess/includes/test_add.c create mode 100644 build/test/results/test_add.pass create mode 100644 build/test/runners/test_add_runner.c create mode 100644 src/main/c/Calculator/calculator.h create mode 100644 test/Calculator/test_add.c diff --git a/And b/And new file mode 100644 index 0000000..e69de29 diff --git a/Shell b/Shell new file mode 100644 index 0000000..e69de29 diff --git a/build/release/dependencies/force_build b/build/release/dependencies/force_build new file mode 100644 index 0000000..e69de29 diff --git a/build/release/dependencies/top.d b/build/release/dependencies/top.d new file mode 100644 index 0000000..02e77a3 --- /dev/null +++ b/build/release/dependencies/top.d @@ -0,0 +1 @@ +build/release/out/c/top.o: src/main/c/Quiz/top.c diff --git a/build/release/out/c/top.o b/build/release/out/c/top.o new file mode 100644 index 0000000000000000000000000000000000000000..2c44dbfefe8c1a92a063d0f4d89e09710acc3c65 GIT binary patch literal 6112 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 CFwV#T literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_add.o b/build/test/out/c/test_add.o new file mode 100644 index 0000000000000000000000000000000000000000..fbad07a993712ba43a0163ffc6c8234f5a7c501f GIT binary patch literal 6144 zcmbtYZ)_aJ6`$R^vz?snv*VE1Ng!tgNr-ZLcH$V@;Bb!Z-A(URb`}`dGGiB&AfR#J9|$~A3LIJ8k0?9huA77QO0tcLNq6HY%ANsK2F{8$z1;Y zpDsN7b_AI}`%(I8sw;s8S5w{7m&42zV5TqUzdC(oKDFoF`FzS=xr~ZHJ+YEMKYb15 z*RJMM`&K4?vKa(#ZiVirsFFYb&Rct7Qwj3W=d+s_cBEhsaj$(JSkgWFS zR!OF}wIZjt@tJOjCu+9GbYZRQLKYW;*1|P)uBi(yK99!nxbQ)PQ0U?ur@xanK!KCr zO&^rxE8Ct0GX6cu|6toUk^d2N8(ZV|!=S&QX+y9azAc-1-_83?A*7enxADH8_qT?S zJ)EB4{bAlu@jlP{=Xw8imV{tT|DhJU2xA;WwzoBa?BMu8y~PD6_7-rWJA&+M$a2q} z3(Z9qdq!IZ(5tPimXeJCtFO`Ey&Z1 zr+)*gV&ij#QG1!=f#+46X?s|#a|ZzWZ7i8Ql#F%4bP{Z)2Nt)B4~Z?HG1jl&l^jhX z+%m*sZDai!@cr#GJ$f%=tp>ZN50yCBvb(Qa+tixteXI|Pty{ajvnLtbxqT;sT~M7H zC=!(2#<+GUnFP0E$-5GxNe$d5c{t8uwDuHC3yBUx<1x5oci-K8sNBiHHn4`t?e3fD z5pXKd<*=B|AQRM82Fx>ojGx;Fg5ew@naLG3J;z*b!@sYH~ZPy`#v|zglukR_QdcIF>4h;GB~`R zSknP&!jdXXZ_J*)CO` zrrq@2jBhX2>~h94i*?Hdq3fBYM=}de)3Zum)5*9VD58}Rl{)#7E9E zKYen9xt2G#z~=0lw>;sxmg7x7>YMdhzfrWDNUO>G!~<-;-ZZ^PF=mYUwp**%Rykd& zn$cb$_Bz=E31qL1s|(!V$>>&_j<*(y+CK(M#D6hzG}8U=0e$rsE!Tx`V35f)C-eW1w+TGjuM z^mU3EcP-ctF`=jhpc-tB5b>SPR+|kgJ6|?ycaDsXW~Z7ZzhT*)n_X!5iv_6HFIbOw z1slq?2=xplg_+Mzn)Q-jH=&TTawm)u`?S7T_KfLd>$PIGVl~|C0b{@z5M;@+%5~W5 z%z$xV&=|~~vFtL$_Oa@-t^=Wc*U8rGQr$0GS$HT5!$TP`@Ru?b+s_tj9u|fu8JK8@ z_Uug3O@L*}*6F?>7d9?jRUXGCb4p zy@ao8I6m+gT|q1cKWum(!KOX-0MnMbwC(M!Z5QAS+yNN=u<>`%bZ6H&eX^tFFem_q zvb#|TZ9VxzLM+~r(q69!2P9JmJbvTs@7Glvc{pFAV8Hoh4|fcWaeTKV^N(GDoMe3RZsIP#bSssCgM$NQJW<%@hHVBy{4 zcQn8d#~abZ@WUpr?TDl8AcD|j-Xtzi#W8aC`a>M!ev3+NB&3h{ z&&b&k1wTdl_bT|Sgr89Gm&niO75tZk7Zv;!!fOgXLb$KsV-)vs1^<}vvkLwU`FUEw zFB1Nog5&d#?Ike;`_)Yc%l8$0gzz6L_#5Q^*9tyG_-_?_h35Z91;2y%KP&ho@gFI; zL;kNSc#iyEQ}Evq{vQSZC;5q!T-MLcwBC&>PWoL6{vr9@qTm(ccPRLmi5Fi-tIx~t z$-nqgTE+WG-%$KeSawjsA0j{ZD!5$Fa|-?m@!y~k2XrByPx&0k{EU)Du(udpo9(}6KbmNNsvX& zzn2mx?Q#D2=aD-9M*&lP0>nCK-Csl|)KuL%$fDxsDZbnXjE^Z*5yG1GrHdw2KUj#hL{;xDqtnYA>c5?hS2qhiXyD9jmE{xu& z`v!<{s!Ex%Ub0WGH4pM9;Y&bZeARx0?3bh>jWYidz6eCr{-wKxMxGRL|L`s??RyE2 uijAVzDgJRv&P{+Jq}n5uhRVA4=e?t+W!|W>C%t@ literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_add_runner.o b/build/test/out/c/test_add_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..b71ce1f7d127043dea5b35c58bc173ddcc4eb8dc GIT binary patch literal 9104 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_template_runner.o b/build/test/out/c/test_template_runner.o index 2442d6030a6606c7cf90b1c71f19da85bbb59afe..3c6beb1c6e869797ab585366954ea2618e9d7a29 100644 GIT binary patch literal 9336 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 literal 11176 zcmb_i3vgUj89q0g+iV_9^XMaKpxt6Ap*FioN#9VmO_L@VnqV6sK)t=Yd-p+i@5cK` zTLg+k)KbxQWE93~iw{tg5z$dV)M`88W1InXus#M6LBa?Q;Dd@V_5aWL&+g4(>o|^Q zX74%Q_y6ZV|M}13o_mu0{lf!Qn#N?(*hW@Hl4Y!OS-BkN#WPpl))h3ID1^ra`|!R>i&LZs>QlW0yqv?hY*1h3muTL;rQ5-N4J$JY0I1XE=_mP7gJp zZ@lWPCl_ERDGquQSL2eJ&qh!p%J(fygJJI3sc=tN4^cP67uBFC(dY2$+Qq2FT@J6| zphpAEYU;_u;0$j|&S^+NMK!h_K=U`AsHgPa2z-A7v7GTT#Md0Ty z0S4wS1&|eBkb6BLzz_$X0GHM4(1pDMT;B2`^z9Y_w#|7Rz^wv|gqMT0DFLpSvmU^Q z1sI>*3-cx%n)Ok<chp<^LRThMsT$F!y= zxXx4XY@Lf-n^yCb7Jfg>zGiy`7kur(Fga1E}^vhD(`p$&6g zQJb+VsGuEb4^ag#`#2KHfY^a>j~Hh*dR#SpZ{vPZB?TS1O&6De{( zg<|s(=vfPCa|5t|=CKPvdoK4x2Va3lU+0mpTn&AlKhs_njP!yiyR=;fdx=NO?Rp>zXlCI|GbLrlI-(_2Y2=e=oUMQ#f4zto3k?`!!FPCx zgn|yrA$ABRmZtryaW*{p0T6M*&*f7wJY>Wi-?lBsWij7%VmUjR_fuAE@7mSI>fWw= z&i40qWo$o|$a(*bO3d3gVa-$&hV!{ZER#&W-S9fuCW}p)PK@hW1vj=bx+dBk%V05S zSt;-&)72fls3+PJo3!jy(TVwX&f6DrouqPFGDMHy&;&hoE${lmL^O+mGYmJE0mASA z!|E%^VE5sE3pLkErK~iRVeRrZ3^;>Wj&0^$AYu8rp5rGyV_;~wUl=Nv3Z|C@4h({o zT#<_VT*Gple9py&aRlL=St~{oK&VC2=S>~e=N{Fy2R2S^oZ6&^rp6)Z+W4hVgeLt2 z?SSDP&e_&BzmTvT2uCrUHaunwjlj{-Oc@iN!%$}+m$#Ua%$hkHlpuUY!cQ|dcY_7m zTl2+)neX2_VI{r3q7SDt!_5{Q4^_r+M7Dd*fSJoPIE`Ao$r9b~INMP*YuYK^D%3F& zri+agQ&w`)3#x7@`U&tOU$iq3{=kzU44`eLBH$bPPp%oBnPEm6yta!$3j_J08R#C& z8et6$8R@*4aZ6sH%t-nUIFk1Z&~1o`^eH7AF^c&VMhtqzWG*{AYPzmynb$0s&Ta@W zP63+*fCh5-jsf#+>X2~Bu`GxhkG5ewOeJt^kCXE(K3e4&&1|z^F&AbU zEM{mL;~be$ll#ht*SC`%ejH#YU31bBV-WBY$InWYLOHUV8Tn!oo;+wPnNfh@!tND) zk8MgoQv(h*AIlaCRxD*s=2EdO#iU<=N$18!FCV)qHtH0ww|0B1?{Y9?Y=K$k6!)>M z+r}b&J!>NCqP@}XNLRu0ZR?VZ1zpG`0h&%SdkJhsU8{Q|U71K%+I08X$*fbfi@w|C z+k0|$s>?HBnz$fzJu|txYr-jdFg1%#7d8QNM+%a8)6GgTbRPuCbO6Js6ij!wvBz|I zRA{o$=#On1+A(fy-!by;O*ZDjF93)HL>E_A#w>8VV)4yjmJCgGQbxA%b z43JFCpz9E`SI?+C;!wq#E#zf1XVwbw=+ETvNDr^h5-E?z?;u`c9y8#&iC;xEB)^e( zk9ZyfDu?)J69{A>JY-ZzA?4gBRYI&*7H8xkF`_d#1R?RQRe|T9yA^o(5i(O0g73IW zDI~tKXNa}}YG$vU!8wgd=HpPV#P24aU!g!*<~KsQ1;!-~IVL_QA^#x!DtUS2EIf`w zCH*f0kM>iLW0E@G43xQm9*>=cKY14ZDd5q5J54S55&7G*=>O>~Jl?HH-=J7Z^TBQ< ze&&T@`Sl>)$9yvvMcUA2zNbqY>f29$g87dxtMW~WgX1pEoKnVv-eux*Zr@o^2M8O?eY`c74-fU&ytc9CCoYu>?q=Go> z^(e2}4=)~8M-jwRIef0M({Le+N$$JIV_EWxp^OQ6yz-DdUIAjNh9B-BZwfPKb|MK0 zdHj}>{Kt`mgm&;V9_5%mBeD{I4q>@}Nd2Y6Kd9(S{#yz!*U=9YUd|c3V#Orw4-3eC zMLGJ1zDWO{3-G~yy-K`l=N|$6pq&t{2ecoITT6gH7i6;CrNpCs-2EhfVL%_pNb;)` zeR&anG4Z&cM*{kzioT5JRRR4a0sR#5=>K^EUhd>LzvMdsicGeTJl;v(jU9m`cT~y$ zoL*V{S`Flq&yqgI91}KA6vr3xr_e9m@cCZBX!$U$`(*G$29Ma<=EAi9BKddLG`M*KoHxiC3{6ERg zi@_&&pwQ1~^}Zbsn?WZzZzPm%t9h0hcJ5ruChEaNTXvq-qZ?p5^PB3{lr zsgKvnn2sy@8C~!{Q}~|}{*A(KCqG|M_&bFe_BVxJNLZsqDE(PLxKZI}lRq5_e}w$+ zRQL~(KdThJm;BkR@XrxHqVR)+uT%Jb@;|5W%ZQ&;_;K=cO5xu_?H*Ei>EEXn{tB{x zzrx=`cD|+X8z^ok75-e}pHz4`Z=P28ljQ%O6@HZPX@x&U`m<;pRCv5o#&k;I`v||F z@b47r?C&a1;}s&mWIXE#H!FNQ;l&D1=2@4*f0OVAh5r)aA%)k-pQ{x9eCn^I@HbK1 zT!r6B`nM{4n)Ht<{2J2#io%bR{v!&Xr4Ij4;Rne7UnsnM&po5?_miEM6~2@38wxMq z>owGl94~opm`gmmjpt{Xct+vnykb#z zUjZ&dA@>}SXJyH;@@CYt_IfPJFHoZi_-jGbDGI=)DJ$V;;L9~#1RY*B6A8zf1U0No zlw;Z%xEKv`cxf!FKzl5jEEe$EokeZ92am#4BHV++Z6{&)Q(hEq$R{iZzN>{DD+~WK zgjb#amlOdjIEM1OM;eV&LH%1L4ZBn;eFIBk5h-WRGqq3m@cS1Ey2b=QF| zF3mXnf@v>(D4wRpi19;HvV9r9%YajDqMa3_c$XqnAj5kOmBacc>58%&K_IERSA(pQ z{}W3^C0QT+N0X}m?*&e^i8cR5?U(=TitO8U^T1VV{}{C|J%UF{&Q{ zSun}|OYRXUpiQ;@ajJh>DpIc2{|4}t;{Pzk|BF-)x{Pp+#{{PSWe%_B4 z=ALt&?L6l>&w0*r?_@T+^JZC8RWUA2nW9k16)zw;5^>_3%pl28CMdDE4^##yR+J++ zOyF}w0<5@BSVB`>!ZoDCmrR)pqPGRk8HDZwZQM(7@D4ub}85<;07OoiEoeO+avjm^o%rwks9_S zo6u*1v}bsl1sq*Q8qQZC`NGqgf=w|}s)MctpL$pR@6=Zy`TSQ1IpOJ2X%{0k>bo3# zWS9T+a!A7Yvc8M;!#Y`?kxKI_BdaP`j2k<$YGp=MWwmcz#<~gPGRBR~tgFc!%_Wmw zE_}$RX3txsKuin4q!|^<7Ew0j5iUvMi9X_AH-A#9_I)V-=bw*r{cZRCOa4Bj57Cg` z#6vW6kvyp)FH=4SAEFWV*vjDqqw9^*KS<9J;K>((KMA-CpYV(9bD?_2Uj+UV;4XZ^FBO1(;Xo=E6_un&PcTv@HG@pyEM8Gnii*lt*HlZjiUjEe3CWu@c#j3q!h(O4WBe|Rp#olp ztTBFiR#wK6m#>kqBwmhCHpud0yYGM-YRWcQ_N7!tQXMy=OqUV&jCf;o-Yyx}40wy2 zZ}cskO)=m`*%by~Cx(YIBnzT zuaWTOVes1|ydn(#O9@{S20tX>CpIhmg3)2+z||21H)0TB{XuZUrUX9|1dk?wyt;zm zF$NInehIfBPh-cp9t?s<7(k?t2EqBfD{+T{;M4}=Y6*f<9mdrb1czgpS9=gV%7p%y z`OyMDTHr?u{Aht6E%2iS{u2wFv-kbl({Nh%G_iMU6veZ>#cSzq_cXkqKhN2_FS!Qb zv)uz%A+e_^L|;Lev!_1l?(W{j%d{Xkd+H6dObe5O4UT20yn%6|?k|1qrmT3GqTu<|ou<;R1|qy9Fh z@r|oJjURg&PM#@P=pNNF>Sa%J_9-;G+j%P}&zEJ|)3!lr7_d1zo$T1mQYe|&<#oce z^&leCMs|1D)3y-Z^D+hfKM2`;$>)>|{kNy_jOW-FQ$5GJG>`g{=Z$}RlOVt?1?b%! zWxU-6KiPjvHmR%lhA;9oWcQ=2r}0y7jHfAk5DNaM{@vZ}UkPKr#F|l7mx0%;pZHI$ z1(Gt0z}L!FlLTC?tX$?it!%l>?ppS|L3!bF zQ4z^~KSNQT#^#7R`vner3Aup;0M^BsGZp2(G8i@ftlh!xgNU>Cc(FY8F2&oo zGoE-kJ@s^hyGxbAwzc?9UVy*RcQQnTecLmr@YG(a)wDuiBb&ARTa0el$6VmKqFCls3t|8<=(Zg30ls9f6awOX9+I)lsp~FOCSU^bX!d$4; z>E?>N5Fz6XILYqJIGROT+f1?F{j0m1)7sS*`?Kv_`9G1EFF+S+6BnF3*mL~K`naPQ zvWou@gm}JM)@4*h)6<1`Tj5whbs~Z8dda~d72>i(jTK2 zT{}<~I;aqHbQB2u8B|LT(aY(Sk2+dNa3}JfH&%BwxX-H%8_%b0dLpdO<>wG853KYw zMGPDQ2C8&a%Q*zY1B5tIX8(JOeWd$HeVXX<7r&wi?{FW%E!J}>2E~=f0)(0FBO7{i z7UX>Kn3ENd_^YmWDIxwiXQC z=IlenF_<_m0Y|I51sWr1qr}td?vSaUQix)&f}XUu-$3J+AWs28`o7(nf?_^3gZ-Mr z7K?T?tZs{HVoNw^SPRgxKjrzWkCC9YuL!=kiO(0r_cr)c08!VFwsZEy`ENI|UQ&pC zewb>XmiqPyj~<5I?A z5)b3ZVj*OYXu&F_@wsE4r>X64bTztPXmY>M(4oTdU8vpt0xE{#GTGlCYC|kCCz0_* zG^~C>ZF0A$pl3JnT3)y=wu$XP7BZ;$4IA5(&Apr0I)I+WvZZ_IbB*m2-EG&|n%r$) zo#>2gV#|QSaBp-UZ*m`3-EE!yP`Rh1-BbByd0AN*f{^Rj*Op^lX~armS09Ji4o_}bFgCTXR0h8}BtW&4}n-?X~h$zeOM{?FMO+nYUEP44#Q0=02b zd*dsfJv$e&j{icvjV~y^y(a>2-MB3eEf@=13SEx!;f@i55m zG1(V~u{W`O#0KA|olFDe#S(rUvYl?g)(X6Du&2p6m-0<)040sQmSj=O?U*q9AAgBC zA_4fZgco9lQnr<4BB2Y};WB%aPKNz2|08^}VKnFUk3bH+=AjXJB)$RSk^k!$U)Q;5}0KjbfDTI#mu?AM9B z`@A8cpI9$NLVu%AKL%1j&z*rKV!(70F}*@e&DnQR{#ha5jN+97+CT~cy!-Dp1^mts zkWWmFfQKsPGInH*i%vuI7@{f>qS3m+LW|W9(gZwQPIT5*Q~rEI{@+G|b0~2(XLnIP zRY-w?Qp#Xc${8VLk|`y|kn$_y`~*&a5iR+?u`$1cTWXT~jL&w6yrHv__l9pc;Mha7 z`UfFsLXmCMoZBD{@D76i8Sq0Yaf}DY8SJJFj`OrxY0j=Cjuk;151AZ{R~0fEvkdDQ zdgV2`u|8xse#l+Uhut~bDe~U3!$GBXj%ee@ygLOMveCVjU=_QuD^)qIfe?~qU`_c7vX09 zUUOzPx<5b@o&h-&^G@K+p5*p#isvj5=u(5oKyAE?qbxwVC4c8+#9DG_zh~le^%r6_v2_AV+=gH* z=`rs;$y?@bBj*`Td$Q*2$`NSDU3|#Vj-^BR#=~T2Y7fbvxUz!CYKe@Xq%uLP2)fjO z(t?Jd)dZadXv4-26gWe3wwEAd%}V^Dk~t!jwUahgq)jVZ`$1^u{RCxy+39cxT#n8| zBYZ85i;kf49!2Lph|W9IZy z99ZE&QYngdU(MM=NcVMO7(PnyV+3zy$KMZCwH;;u;ZESN_JT)X+nsMAKgfR+9rvK8 z$=AX$kdO<1r)_x>;al1DVUlhjN!LPB!^RHXzHL9+z;inu7dh1%jk3i%=hXcGkWd`g z(4m2+5zc`XW1x73+hRF7#^Kpo>hC7{t)*uug>lF&Pu*k4coH&>24tAUa2a6cGLS+B znxJ$p<1K4a3jOX^8v}RhcK;od(xqQx|{g0GlKLEN@%e|L+Olt z+v_Ou7SZ9r1Qru7d3W)zl)0&DTPSh!9%ePLj=H*5NRTOx0wQ2bM`nwUS%R>R9YjV9QT%6 zsghQ9&%2@Cav#e6=2O(i4%LU{`biHK=OSsLapO(GNNXih@1(tI<8!in66I0t z*t$mX`S8@E=mK6DcEJ9hIJsD4PyR&WcS$_zT1pzlyT6r^zOCof-;xq<;Ve>ax()Pc zfkvAgv5y7NRCa%h8ou2yhGz+XKjHcA`Zvg}rCl&+M!HW6<)N)j%-&)y4jj7Tc(s6Z zLdf5UxZ`VUT!fi4zXbv05CX_!2-1z{3fez3Vu?f}84g6^`KFF6EOJ=nus^(mksznL zS42J#RE`1QKk!%T;FBV#93rQBT&#TF!ugxOzX%rG*{Wz+i1-IC8kNT6^%Ig(1}RiA z@84g;<3!URp`7er`}P*FaU$L?6vTLaZc$$e)%W|)Q3t{U>G3VWTbV7azG$lNpPzBM zc8s|;`?hN!7(oodi~Qf$CXCbS-;U)2MqwXFIrgVetzSgh|0tvwJ|()A>;EneXk^d( zPj#WGkaq@(>-exUK;n3T@4`<@=3u|r8(`+EOz=2@_{lXNASgpwAe zog-}V_#Z=U@f6Db`#&W=cue&%9Oa&gp!3`ajCDS|Pm-oz;i*Jt#IBGLPLBfk_`xk7 zJ{Z5~ys>71^IZEd*Igjp^lxR=AvbNCj5Q&@&8@ttEUJMwmD!&^}HKXfvD>i&Ty zZ32hUqzxh;XwtPLZYjiFtVy3>1p$9Fn>3eJ7tPs?{lWJXMv&2@7irWrXMaTSdpTS* z>7W>myh(o{-d1+%ti-@(Bv5F%ae@L7YG{Gx9&O}SG;bbWapX@HUt{7I1MKlQW zPx~LoA_g=h7=r}s3tArjOpF)AzE(eNwP2>)e$a9QhB7*v_xueABD@M?W#}P_LQWyI zr4`?Nf=)M}#>#LZK}T>XhBy3hf(S`4SgXI1YHVfRH$#oS4rPDI$Kgg_LqBf5U z!8iQ08bHu&Vt;uf(4Fsze4snu0Kk9bBO2!q+Uz@Qh?>Y*?F}z-^FGMzJI;w*guP*} z$f>l9f3U%CY3NezJK*3-=Pc^t1GvSuz(GZze~EI&M9$~X1Bi_;Kw}*OvuZXhmrNN9*80Neu_~yX{CjVC$C?G{Q%zTmi=Vt_H z&VHQe-$TC14Wq!LKEsd(A-tm1-;>s1t*l>rs7DP#*&p8lj{;%HG1~DD!;aCi;9y;F zurt9McPtd%hC95D)u=JLUlsX)J3I$~{~*LQx!)GszC2XMm$94DF_qFf{fuYmbM!Q4 zA|A5dBJ9jIfR7$8@{PRz0tAbR0FM`?1Z)L=NZfFuPWu6IQ6NBDG)gcLZEK>AlE({? zBKX_L#A`7C$y!Z|-WChs8-@Lc^#yVXkU&tA1hPgTlL?t^BIVL~J|X42fgygB z&l?2BHq(?yBlQfr($7cg8I%G8vCSN*?XSv_N-_gOIY96T5zt5#668p|n7FM(4OPP; zLqObe5MZP(ri8rcGsBqw)4eeF`cy3L5Kepdh7UGjOrT9|O+E*??R|)1K((a+wFW4R zw%~2@TL`2;rxW^e!ReQr6@oLKP~!yZj6~%VN{*~GRCg=;$t$5FYctCJYu=;rkZf*| zTd?-PPWjLUw#YAH)gQiqrudB&ov#BC1B;COc37|{;e;NUNqUcn0~ zM+E>p5I}&3JA3h}d^S;4G-O;WWkA_$kcG0|*{GC-N~m4>pIhiw z2%wO(t8*^5ko((7?hopwhFj{%a7#VV**nBiWbN5f7Wy4}XG>jkVI0g8t^V2A0`c== z{v-g7@CSkp6!zlgJP!)U>23}6J&hXq#XI5lDuBIUW?y^bqT@lw25qfwKN^GstJ9QV z!E;8Yw85oO`wPf7d~Tn}2P}FA0RFA0jGnvta-jSnQuC*@3Tn=NuqUux7zTj15PX_Y zIWJ7*0+KQbQb2bC(W~9QZ3~b2`7Q7l+PcH}#dCvK;6v~!+PYiAq(qUFFaJckw5eWQ za9}I!KJ95vqNOZa14qPrFFbO05t*-7DEfqnK7$U!gB==0cuIs(#LYybNCZteim1>P zGKy+mGJGVv!R^N=3ed|@BzeqHgx7L-(C+fm2pTE*VfrD+(g>oBA-C&jtUq9BwZ12; zd)A5e{tN?yngHXn56FOc!H1-Y;kAtVLE8RBTD!Eec36U3*ce`KqwGKWN62-b#>3~+ zcsOmpzU|-Nk4M1{)R^Cf1q_a!@@a(tw?d8L;0c@cwnmyn*(wM&{H9#w1AcQg)jEf2 zMW_n+&3sy_HD|A(mbK70mAXd?-KiIYbx$TK8kZ96eKA7HFp{z%NXqjBZ)JaYAymqn zDEpszo7X12ujC@$mj`>&1eQhkR<!!YSC_WuckH44V~t@#{R^@jBnorQ?Xa zOW!;jyGyUFq08cRc1|J_?qmn1qZ!TYmq&Pb1qVU>ga>-#Tn$ z*9y=zNCL;Iv=^syUAo1yd4gni2nl8z2cjpWVl&mmZg~zG$g|U%L_Xly+X3*ec@uVN zVnYc@YbY@odx<5*&*MSy37nQk7W=mC=oj%G1HE_-Hj9)=5Az36KR-dlP3-eyq62>= zil0ys!GRv&+llOE0e@AJZJ}awb~aV#0r#SW@VnxaAE1E$zO%%!4DeF+&bMI5cDnzL_rfZ_y=JRW3S!VDj` z01aJ)xD2`;OK@YE-&7nlR;xUD?t*kc^x{yt7;W_wpHqrS9 zpc3;X?tN)O{lox{$pq zki8?2y)}^C705ORvOf)EX9uz~Wj3gCVL{vL-24vm$qpzlp#S&-bu;S+F7icHIIc!S zhs8*;OVnr7WzE@V$Zz%w)VI$Hu2%)>Q$lSwMc*MrzfMH((>O3E#(|;)6#S)=SSl?t z>B|KDKF|jluHkf6*byCnPs0B^JQ1z5^^htd_V_pXYtbC33|I9 zU*8a=5BR(OTuy{9U8c+U>;81qS7y&Vwjs*Md1uP+0W9hOrSVmO=g{lVzzW8f0cbIC zhJQx@N}RI`>jIDGJIA5?5I|20sQ*O*^yIZBdF?=SO2h#m1lYcP9%dWfJG4An=^38H zU$w=%XLo`q=xvu~c0_Vl0|8;jWU)vTpOVD_QG7xcr-|b4WpT79J}isXeUj8kX;xysW zu(<;KO%WDE%4TOS$x_>=ba#+{fUgi|_Vm?|Q$FxX7#_+BSaATh*nrV%`I7Ex12$2@ z_zK)`wif?r9AXJU$sj=F8G_nR#fW?#%F`4h9X0q1EB~?>j2}`H@SY8#2R&&qYF^wT zP< zORyfqwlIpv>{Hj%K*3g;b`t)E4jV0cX+H(37MwhFU;#@TPG{6O&^57WN`}g(6Mj4- z0=v?g1I#}zAwexV=&?j%A5*c}Swi$U6u{{LF35R>;3OWvMs`G$x&qw@1y9gH3Y0vd z_##2tehOzU5WVq)tsdV)VmpavqWeUxY{72?wq0Pa5!iMEdm~|+o$rf^_z46xsM-0l zfbb&=vBSnt!<j5pqrWFfJuRyH;ps^HKf0W!7=891UqV~7t3-!l+_*K}hm zI1&eP4WH|tp>3W&^8_QeeH)_F}!8u5X7q;Su05~@ZsD|3qdVC3u z)eGLPIxA}E>b$_aEy=v!$?Soqc6BBbxr88?wEBxNT2L0>p!0o14GFj=L~w+yJ{5IZ zj5-}qbR!i=mfHTk+7BsPLY8|?&ZA?9nzc~ET`9;WP3+eMMk|AWt!x*7I(jmACTwLJ z0#M*+U5~-42fmdI;E&gj7WmNu|6>c#-+%I!)_IGHSFX$~F|(D`JS>2z*m*l)rBByYF(w*`iiRvA0$qZ^wl-q zP`t}sRl2&g+6y(NulJUkJg)rG)it&2UHO%DtBdhRyE21?A@91PxXM>r=b8tBS5|r} zDyv;HORK!ah5*;%8lP)g-6}LNztpv`#xsG_Y%7LyjYbfS*&1KUG%gU5_lk=9QKgdn@ZpT_$2) z@jPH=mO}Pw{8ck=siYLioa%b~p|h2)SyeT~Uf06f;!1A_eh~?GEvTrerLI}&THsr= z26@-a$~yYPV=F_5Q4sW88d~q-O};3xNk6m32Vt&)+R~EBy2={Z*bpz|jT@V>qSAYz z$}=u}DXxWZYPg$g7XIv-uNFNhGudb;jcNEtwUv-I>YLsQywAyl?aFi^iy0}`Y z#GiAUGjG;qz;C%@kCHRpuGl24Otu6UG0$!eEpJA7%hZ2aoCVaIz)d~y;^6Ua-q-7E ze6_BUikixj(o0>+z?F&s7rVr$155zCYilH^j_9h&T=+;_wMkWr-2BoyUzPV#*TBrt zRb^3%ySBCl;F*>6!mcaUyEc^8*1&BwkA-!@<)p})YCYQRhRJkORoVcbMqpK3WS5vKw16|EZUzM*; z8K3FOt0^z8#n4%;Ovr>ocsX5_G7*9?f-zL)*VK5GQCUV=8HK86_*RrEqfj|zBn7IU z1vP4FD~qd?QBa_uW^E}Hg#rsIt3i%>XVld3Eb3iYTwRX3lu=YIoZsga+KocZ7^N#{ zFp##RQL}p;{C>*W?(QRJy1U!)If+jfJ~993?#{qxB0g?>%J8YhXFEQ3dB`l4QPzwslCG>27P>H@q$n+}t*SI4Z$OO1 z!WAxxlSLrRa1|TF7=G@9@zmbhB>J18x#)rkPvPVR`9nw#A#Fq2 zj&#D)-QDzeK+_MSFOkkgs^ie(3Z(RxDTf%JByJCWub>F$0I>2*lkknTY0 zM|ulVJpzBH?-}qTJ&4qU^lwNjkiPXS_>ungDEN`~Zvj8jH<9|0UVaSxOi^A$It1xE zFM%KF7;G#nkk%sIiPX{texx@cZ9_U3hXH=1uOZc~icqpK11O|jNGp&&jw8*T zNDsGzAL&2d06)^ZaVG3Xx&|l8I)dE{JRBZ^^bkGvLfRKk%PNo_cpv;o|MDUDk$#8w zLfVjK;DMnZX*C}E=~&#qj)%`fkb3?Kex$3ARv@j%TOiwzCZFo=-jDQpq%Bm&E214p zM2$M{vZL;H5jM+k$#S}1?d$Se;r7Fk5s`%JsM+i z0MhkHXCi$UX$8^^cz=5*(v|0-KhoEbwjoXW68a;Zi&V!(eF@SbNY^3tAZR`8dT(I5Eie*$els>C^F z#UPA0C`bev@;%csJnX@!Q63< z8!R(ot;J9XMZzDzXA*lmTJ0RB4*3E=$?d^BSAxDfsflfMf1bi{D##{mB? zO#T~zKZw}=R)~JDnED+6emNehT?~I5_(VK%q-O{L`Bi59r-84)oKY51|1z`w82HV@ zZ+3Uz6vDsV;V!TJGCxFNuOj`{MwU|!^@-)92126N~&!8l8?Sugzo^rwNpBLv@U; zUcL<2<#M4H$-f`?VZd(;##_85{|mtH0RBh_{`V&SB=G%dZVzsk_MvI_2+aANc;#qT z2tM1y4*)(Mud=-pg8zewp9y>$)(RU!>c7^ke#2z{gTBZ2aC%Z&}7tonL%Uh@A1eJG4)r%fNs6@9r8ZKT2m3xUj|LmqTW-_2btGiO2CM zzdB^f&*G4$JuY2*Zy>V#F4>fw^640Dz3F;TB_e zC~PVCWz^62E`S(x-*k)ift-W>Ez1rmuRDO}a&VN)?Qur7|6j5kC#w1X{BHcdTe#pX z+21)bEs*JQnXZxP7MbpnX}FyKs;qAj6lN+JjNe%@epku(9VO#;lZ@XL8 zK$$susEfmu5vW{vmgx6LIjXKQhLdcSkqG*&a85zLGErb|FbKj@LB9W^?<=SeP z!IGA6DQK*h(OXc6ScyV}%g)UbkwcL5NJ8X9%mqtCKL<(iDDe>tFFhz)4ak|RFC9o) zn{fLCA6^GEQuQl6qbNek2i6%{!LB08mT^*3aka_NNwj9 zB)D|y1e*ljxP?H{y>y!u^pV=GEgYuwB%iRJSFJ5bBToPqoBS9_Jf~W{&?$zuyjLNz z)_il? z%AdJ#jIJq46ovO8b8)lmu88_9N>MK5J+XUv)D~1$K$f)ZE>vR6z%q2TlwpKGb#E*k z0lVf%_yDRBm%2ClPQX*9NVqX~0e(9K_8jwl_%A^pZ;Yv7LJZ_6-JqudNXF9n0Gxyz zUE!hRO~5Q-kXghaixkdp5e{w<4sH<+ZV?V{5e|-05yVDND=oseEyA}UihSE5e4C|% z;64|1I6I8P^(RD*#VcZ$W;5+J$?%x*w2!YAfyo)CAmzsB-|HrapxGboE8tXR0>< z?osIvWb9VyivYJM(Rlz_ey3_LkOov`jJ_J#*cBkMTw<}-0i+!TMBL~&S$l+v(~wi* z*3_(3v>R1Aou?-Z8fExRu~RpwvDOXJ&DH=zm%5imi6aB`s`eP7hdWtUC=QV=v=%Gz zBD-9%k<&)jNC^Sgu#rn!jb07Fl?|zAh4LPnrmNkU8Djp5wOMo=j(DXEV{)LcT3BQV zo(LVZ0^BITN6^itFyS3cc!!lja5W)h2&O!kh;|b`oXL)7|EL%t_)36u5rWfovYm~G z;KB9`EZV^Kw36W#tA$X{Rq<9qRg;9jEP#liP==%=x+D~!&D?Yp;c#Uw=C;~Cz zt4#PR6TZr%uYQRr$@cW3##!hKR_w0cl#kY9^pOw`YVzeMo)^9xMPr5uhmL(4CX8ZQ z4A*B*By9dhPiiyFLY~fqr(6DoInQ=eDrpl%e{QLXLf)N@qrEvVMEEA?wa-a<%v zRBYRws#3lgQN(sjs!sWH1iv+v>WVr{fOO<+Pq?T;3ymP#lP=y68bY?iDfDDGivGHa zg~pKWND4Vz)RzQUO=8ccP*b9;ppN@FX_%_^q(W3r-1Ph46esjiI<2v7zp(-`#zs{u zwk+tOkBb}%X5Cf{|Ix?ug2VPKETB)|g=8DOY@ko%1($6;8mwQ+3qx!l(2`^lFJ#$% zhvw^(d0~R>XN1Y-g&f-pBp`Hp380dByCpG z>nK#%3W>+VwO(VZBg`CL@Y?P`D)VWOm zBcwIh))UX=_D@mRY5N%!7RUAm*)H34q|Q}6&j7Q>rVwUnuWwM;Z@ZCnTgKIS&^C@l zUmZ!)-lMh~sZbPk6$*!J52HKubF{!e5%Z9HUi+C(MZ0b$XNaj5{s z@Xn5(2)^i_a!7m)s*G+D`ROocObYjPZ5hbtTLihf?Fm&qi?Wjka3>GoP9DIWJb*iS0C(~L?&Ja7$pg5P2XH43 z;7%UEojia$c>s6v0Pf@g+$jQh90hRO8>)6a(kQCZ(BN%Vor&f-`@_!^=Q&_hXC?p^ zrw^T@Igg_u5zZFahdC2D%`-5gs>D4>qxa9M76IZY644_ECX?;zP~-NK)L4KN=TLN} z>O5;Bskz|RoWJ5y9{>q+{tNY3of)XX<}3oeuEg~NsjXAht{~YY$k6uhs!Gwu`5AZ= z=KxTv&aIGWQQ{`TM{MU*?RUgOL_Nh?(DtRO?}7&=(^}B>l^Rd|qa@Q}(AFhNdNQpB zZC{I$gRk~%--uFjGOY(~->FUtBCcdw5ZeB&CR1rhGOY-0-J+D0OiMzn$vJL9GOY=1 zswm|o)1uI35hYJDtqN_rCH7Tt6ezJY*V$q$X`exDjhu+y?Sfa`jU@I7wAJ>dC6QpU zpW_4Mx7#K_W{_iPUlmIF%r~+8~QiqUI6V(?sS1*$he6tCb+>fOvu#?=%># zO4JTwe4EJnfh=E=rC6b*Iv|~@h}0Gu(BD(%4@@WhBDKZAB0o1oMk!J6A)j(D?4%A# zCwQc`Jebr8A-r`AGZ^wIkHL!S;BoL(&Nzsci`+U1gBQ zD^XVw={qEKXga|owf(`QcNnBGO4JQR`bUyFES=zy+964r@-dCe;j*swU;*zK0wR^D zRub?wHFiWg!6P-lA>bH%K+Q-eYe#Bl4d{m$hH9qNOQ9ttF5c~#G(hK|)Juu#i+qX; zuBnbpCwQdh3MO4_kd9NL<`C&~7>R0DI>F&3!KB*^(mqO*mq-hsk2)%y;ILsZ=_3Yd zvJ$nANN*w1(dh(-4JB#HD)No7(l?$87I4N8pes@IYGKOz6t^x(CpdiE5O9W+9VboD z9xPxKI*pq^Q=-z5Pw7oI9G_0`NbTcb(xnDzv=Ws^q&JYV6VeHeP6#I5VUQ*&QEQ2G z9Fa~;CwQc$%;#O8^uoeYQ72&(xD3cgk5F{IrEe7Npf=mHqzl89<{Mx9p zrxNu!Re3vEVrn|UVToYUfiNd;vrUO|BA@a(b$d=a!6UU3k~AfXw3{XeREGiGOs1SJ zJ@1SGU5{GSnG&ij5baC3f#kZS1c!w7*41>I{t@cxQ#nCV``aA9KqTr@Icl7u4zR^P z!V6H3sm+}NUNHK(L*LMN*uZQ35L_ns}H*1psc>JgpM z67J4v0(e9u*m0!M&RIR6TT>*8zjZ?_duOBTT_00R4(O>gfnYbHq@ARp_JD3xBz=l0 zYOP8CfZpGrPv1fGyL9U{If9VC6~yJY5`8sw%PxIHwUF;hbnx;N!N1&fEBW6pef~>e zvFu)|q%S9VTTs80ca0DWeQglcZ*^Tcq0?mju6#j$=@~TBvU|DGzm}}DMz>x)RWROX z^3OK;*XVsi_}AzYP5!~8&|KZRV2WU*IgT!M?+%lHuHGkvf37~>;2%&=PB7P&bQsiG zQbvCv0x}5N58tXFlC0@m=PIn9jsZMyz*K6>D8c$z9D5 z?^(0%fjn*ZkM`X4gYBVEjc(lbf5 z?N+OkHm$hmOoc9W?|#@#v~0Wel8~0&U>!+F%kCV}kR8@bjFyRp?6hWvHl)!yA+#Ys zwT`2PXuA(>9#pBQHyU~s4!TBBn~l=a)ZbC(-DKq}F|=|JeNjcd*(g__6;x6BKq6aa zwSGEYXrBeE(WUMkh>;;$vCKL`xL2X*pR0{>f#{zi>lkWTflxA168&2U?=~@kY5oR5!sWdqi~;Mc>27WS~hw zwK=HEZeiBjMvK};!vb`vd!LC%V+T`5-@-02lohSNm5rx9c{g-*Y4Nh2t! z3*fnGZ)3>wEJ%xWFQN%@Hq<^Tt=4)VdXXLIVE6l$hN#FIeyN@^v!;*1D8S%F4Z zY7s@wnFip&&8g2*EOQ%xM>i`PRY!mQNiJd1EyU6%!a6)dsO>Y|*_#NpU!kt=6ETj| z#^fTJk!q9+T@RDh`$lA64l$P93x(OzBDgb=nRugI5pr_LNv$UOei8iq%CZ~7=_#t; z7GW(MA?kliBP7QM26_LLQ#Kogq&Ool=MH4 z0_QdB_Tl06Ele`%JFoF>f_|dDFO9OS@1I6l*7udhdy$4aZ*P~zI}xt0q`yslbiZb$ z-%g;5zv_)t-8%tKRz>^n*T#zW<%#-!sm&oI#a!+-4~Q~#u^7I;(s&StfklHK)WTx$ zueGok{2NWi;QKd=;d(%m!*yZmljK$hwGpDu<*9xuKWvmMQt2Bv>LXe_oqwT?so#-L zJZh9_b|LMDET;i*w>aWI;-cMlNq`HS~l{t>*RD&)mzqeb+CwYd3W4FINE9{u99(IWaCki*cf z@o}#0-Y978?GtjPmlqj|~zGqeUXaUzrvh{&J|3KCoCj`U#?E%yFFG6PDrQ_yfyi5$@!) z^k<`7Aja`uEN(H5<*fLjWr7$-a#rlHOgASQZk3NL9ufaMVqkw_2@Gs{2B5ZDtbL?H zFG%GvbCE(k{d<_zs53E=qTl{G0MxuQs-LBEV0yCstkLbrh|o+*!naf=q^)UdM`uYg_g-7 z@)la=i}G@1*h8exL`&@FeFfu4&{XQ+zK= zY;TE@dkw_Jy`&1?l=QM>%jsGf_9mJ83pMsA9@5aYR3xDPfauSYxG&U^hU%RE3w5sG zU#_Hg()h?%tp{N^y7*V3kg9v#c*Dlkhc;FD>d*nun5O5{Ols;vwZ}`KiPXj}AReq# zt|sszwQnniSEQC@faj8SR~X%nxT-bHF%t2$}l zO6#>j)rwkc6d&81N=Kb)o$92mDWBr6A(37KaAb4pXwt|h0JMNy;lqx%UUgElFi=MP zLRM+?)i>CVrk0SDt!fG>X4ySc8IdP9sm)w1ET_PodMQQQpBhviW$^ow>RL%9TKZ(js%zQC|6>HP3vm};FU4eyn_>fYaz;rX~6rVbJvRp{a-8>Y&RFGxK=Q@{w- z!JpOauAudChRV13mfhH_JwhJsP_0iRrqH!nBLhdvzPCDj93J z&stx{)I`^0kwCX*Vt$oc_QhZskyE&=GXdu3$fFNi4`be>D+wCYrS5&jtod-JjAofU z8Xul7g5gRfqmE?XZv7*cG<1C?5-|6`@X5rV69CpF#!6u(U#{OiNkoZ-BiEEvDC(VZ z7gnKU{Df?_*?PN_m1D|UV9MGo4?hY8^H!5NYaub`#~M#iA2OLo@oMsi$N{S;mtnr3 z2k<>$@u;<+ORben4u99?E9`uXw_J?3NJ3sM33;a^T0ESW@59KKOJd4ULF^x)oaJ#f z<~Y(q0B*uZr(2{F#~) zltpCM3aI1~r2@+!l9u>Py78&~Y~-@Hvkltd{iZ z-lbIGc_K(9?NOoSC6sQ7G^9is^Olp_+wTCJoxg{B^Bt>Th- zip3A;2*XM#LZp15;S0#67aGFfM*9w1t^aFZXfWPocoQwseu~@2`0&{UZXw=f_}_Vr zAxe+d2a^Aa*BD}WUcAQe-+Y519s1br6R#TZ*9(4?QU<~1TLKJ`?SgL!(9x0kmH-vZ zw*;tQz9m2f^DO}?m~RPC!F)@A3g%k^R50HXpo00902R!)1gK!XCD0donr{iv+01|N zmH@p=W468H)Q^DTj4kY>Ima48DrTLSb0Ip$jeZeYx}1PV|v-x45o%(nzm z!DGH9kcYyB-x9b2Jb||aHi0fqz9nF%w*;c~ULc6p387K%lU~xVqV;$b?DUpEw4Os* zdP^W$pNlM~Ei-5n6^DFFpcbHLojThg-x45*L%t=z^TBTk{0_)p;S;aK>_rl-kAMm> z^o@20!zu)C2@p0xKCQ-^i>nb&6Zz9>yt+tqN+O1{V#B+ORMHdq(`vlD$Ymr>g*Y4D zUZhfTB7a(q*B5C{btUqr)p&oAN<$K9_in=rj8w`>TtYJO1|yXwB=V=#c!iNlIf?vf zHQr&Qk|%L3?l!!{_!2mbr`33W@p)9JQDe44VYF@o67jV9h$WF=;%W6WvcR8KKPwCT zY4uTA;7_ZM$pU{`{hTcDr`6BP0)JZlf+#rdz|mH0Y!WxY^N4D(aU#Ek;C7K;KyZi1 zpMVKt<3(O0c!J0;C;CK@zlms)M825vPLa9^O23OL* z2@(y+kS!dbBt_A}GX{_>1JZ*av4Bi4ApHmu2S|!hl>ukR(9XNQg#JHXmy-CoNBGTa+G8qUma%w8?NuEJG&-5Vq z%OzH>h{2a!PdYu$vC}11?k5R*ka!Pr>==o~(G|bcy}dS4o%i6yE=Bovu7Hj=v6o@e zOnHr@-*XAoO%L{Z-$5KVa(RzS4!QV1ZTpDhT~0Ama1{370&Yqc#pOMGq|eQ=SfTW~ zhN$bgygVtd($wJZB=2S7sGkxdZ=E5a$DawiK9X8M5AJ&Xg7nSh@>b*uL7$uQsu0VB zez{YHJWtBYoME{r<_LB3Oz~Hd_JES3ljGBm1iH@EUtzm6qiB+_?OVh2B*u>~Li4&p`OnML`dQvn25TZGO zEE1mCmFRSxP*zo)lc*wNOIPM3js#90%cZG;d1^09GW;}Cnc9o$AZU8*;9irlMaF;> zp!AVc4beqsn!H36uO`@Xk~e@hhCw>Udx#vXL2(@@;^NhTaf#7dTJJPsb71>uPgJ9$ zMJq@{N20351q0%x3D8XmgSh-e*=}wKL=mSl7^0n=kwFsRB&i2)A}`KKoXQ*1Q)3Bd~n-@ zpCzQDg^9v1lfG|kr_uX8BH$q5UC}e#k&|WP%z@u)tTLPW4%Q@FrUWZMfZjdDkdgxd zf3X~{BL@P`4}#lC7W=Rbl$*qjt@1o(IA0LFuMvCFj|V?7|dgEP?Y{Z z8j3^=;-QG9PQz-!LsWzmBNU-cG-t}#6B1ViVLZj2gzy-W7#>5CLSu-N$5B0`dIeiM1V;lUC44aSzA(8QJAJ~3O6rBldCkfn(0-=q z%9Yf$s`^b_EG1YAD)=CihK0JKT!9ZQDsRN+aeSV`$D*cL?6#T6sr>dW!DuJ1CD4tE z5%diP23VxU__CB1uQF%DK9;nPsRyStOlg?Lw1&mFn7Vi>vPg1RZ{5ez53;D=vScq~ z2lXW^axv5OOct59xWdRVwqyyX)*3!#QTi*$TP#p{Eh?rK;as{ zY51xWRUBr?y4sSF{ErupL{1s$tE(MZSzS`)TUk1C-Gp&P_>0C>mDRp=8RgZ!k@(xj zb^ig$NbmYJrJ;m^tEzIv$nuhs?+c!2)Tt;w`a{n63*XSSuGD+Y>NS}ac+p)cDypk2 z2cXD{GPd9*4o2hE39>rx%9W*M$YTs}Nk#mRRaX~R)d5H{y|um)Z_%tdd2S&nki*~A zt^f=IA*HfLX4lshmDb`<&(=}JPy{DxFuif&uf3+IEb2Vdy{tFB@}}mpo|Jgu5KPsa zx{JkW)tM}o0B|hLeh&cNAVB0jEOOXBHgq40^y0WLN$WM4#h+vPHfFD9v079na~#%u zh0G4D7MDAf#p@$E_Fy^b~u4k!BnB#gDzvNjKdz4X=E&JJEO0=3>QBN*76U(%iTs?s$XwfH` zelLsMPulAGJQk@>0e-vsG@AR}ra~6^Fp67IjMKJmE`%|j79IYbLT1>pxv+jMi_s#_ zvJ|}^OMHdRp}I2JQcCnfmWmXvGLDjaSRy4)mm5S^Nh0Y_g9zIui0)xYOAv#mFxWli z1PPu?#F^}B$#WsW`wXIGp@OOXM(td1iWZ5+C%(*j9%e~}Eb#=(64Iwoa*`ED{uE-& z6&jV1M*aOPZWqhQWzmzF<5?C{#w5uwqAcVFM-r!}Q`gxmh{C>vId`)w=dnwOri=}w zNkyK_er~Wdt&t}{@WsG~jWmp1pT+Zx1HX@4+ zp;AwndKc@R$?WC&i>wz|QIoxqyeA$$zMt8(4H&sGT2vX89Q#>(1xvv|S;~^`Wr;pE zK8uYYLA?uE`Yx81$x_PUtuJB+!$l>o67E~e)GB=yV_IK*^5K1l_kGIL`*IjNr!PLt z)O|TDu7LtX+!B`JWl68_Xs|?YU~%uU-d>ja2--t z9A>(oMb<;o5y*sN>xWU?clcSxju?5S-p?XOfMPl*$|Y1!3?k7JO&Sf|r0Wk0+ug(T zwIuy8;tbQ*nc0}Nn6|W-Ovw8bjkQ>x#$9`w^|oT*leoJ)nOJ3jlodqRlyRMuq3UrkVR8#%kQB7$0F&k$fBps>5^{!|2OkSusSF0GE84>5~~BCAr2Z;h{g5 zCHQ_2%Lfn-^|>Ny=_lEGsv?)^_0rWZ>f9l2A1Rfb0j1+VWn(NO5}AE6OZPGR^=u68 zg^W?Z8=XO_CtIfWU>W2F@CFLw+MjSkWbc8*YQ@Y+X*o;2DwK-+;QLggMw6q)`dF{g zEK>;G1wxHn<@?ki>I0WP$n^fyPKJ>hixwZz6OTM60@4>Mf(x?@2&K(a&?P@a7PpQ^^jnNjXhcK!&wnpE^sx-=K_j|f z9&>qFzXsef1g>Kl3#pvp!ySXXp7p`x^&e0z6VZX<24oE5GUnnwm&+Jy$bh7B<|->^ z8Mh%}8KRI}PvIn~KSf1H9?RIzX63S(x$NpPHuN4M4KBvt&W7bOM=r})5&{n+OISzq zUGgnI9G?!u^UMhK>ETale1^xThKt3g9jfaRM5jmKFNT*gL}MpkVPMgY=?1HCEExy2 zF-IF4n#bbdKH7ShSP5kr3pc(}ZDX{&(Q^4JS!-ih#Kvf`ncTG@YhXQ#dsI&5L9^t$ z|NXkB6HAs@9_R8IPrIJcOo&P+A&JOkqba$N3c7Y}8y2aFE<+Pqk%+mNypLvu2FA8g z4MEcr0%q9sM1k`W7FWTXJFwby(bPM-f+bLHongHsY*@JU`nR#9HkOgcoCjeNSdV5= zv_P&-Y0P6qOF=1My%-O3ko7R;5*`%`A6k*bS76jWO!i|4!;#ut)TnCXTr>}4TKXk6 zumtE|8Kys$9$bI41H1Cz2>{zF{kP@V39wXjH+D&w@scpxv=tKCTT0L7t;ct1P8k`e3zVI{V+hkl|n>P zIU9H@tvQmg^0v=B>zz<1q z5ONlbz(|YnN|F{wo3_vQVcpzA-^b!6i=D>xV&yWKCGVy+4WA(8z6`L%pqj|CyO{O#Gsh9e7PDkJU26FB0vBVSvKiUv=LXixl9{AW zp?~nrDf;;%NA&Zo*AYF7xpuLn&yMKz`YX5Ga;v3Z68^*8*a+WQ#y*23V(?M-vA#%j z_^Jc`&|^PKvJ6bXMuhc4Tz!Ydy-ZtZnya;u%t1*RAHO7~ z@2buZu(;|9Z^i#lr(!rr{U4u-as9&2+QdJS6R+{H8?d$O>tz#j*@9elIaI(IY96XO z%JPLIzE8pd0cH#z!ubH^$z_qb%<2&!s6de6_Xs;V}9Ixp~E_OO-|Q<}6%Xv}n$}h4_ZJpuVECwz6zJ=fM%`>f*Xp zMfhdDqPpVx(v{*j@Z8la6_Ox+5UWn9=Ntq91AdfBnLTfjYsRSY@~<4aGFE%>^HtgS z#WE0zPb!w_1ennl^I_85xzPg>%7G! zt1{Nq;^)=q7t%7|c{SCefTei5>`c4p1m zYT0n{Q(QA@@OK-PGWyLxg9kq_h+oft<_lE@wFPlGYw!3Jdf?pRb<=%qU zaSz}QA+(rLBM$wEJy=v8ex+_6|7lGH!Il5arci`y6R^Nc@YU9=m-d*0LwrTBT~!j_7A#jv0B(3B>s%TUy`e#&-Gt2DEISUH%rY$a7uyApnyJ*q8x$`c&a^3}T7y$U= z38M9(T)^NjDO?ESaTiVymY7yoS6b_J(~ow_hF^$&hG*LR3kss)cR>VdxQJH3Ttq9# zf>yj6LmNW1TpWYpkG{q)AYPF7VhUbZZBRp;(BWd7Xn;xceLc-q2aEbX8JU2d{Ved- z;x|LN{bjZ8%NI?{D_VG2aR1B}Kg4=jZ61E7l>dyU$<2TFRI<*V@1C~MJ^z0dckLmP zW>@{rDCXgUJxgGBMx(Vx!;+Bd&Fo`lRb;9k(^Ij#t25n`&4$38>aMEpn(3|aPaX>z6AZYBj}=6Av!J3RpZ)_i^sI=ia*KeD}ny3zc;Yc^SVtx~sK_n1xs4Fd!12hJ+05K}7UO$Zfa1 z4P_-pAQ*luS1n+xhfsh?DXK?Q@kV5aY$H}2Ecg6st+ExXn{gfGYO_qNG@}99XE9oX z=$_qrCrA!YBKTy}@*p29Nanx>kn3SRLH7S!4aZi$*@TQmF^r`RTo4msZ0*-~2L|5g zW6aw?xZ=^ooYpXf74+nfhfba1{no`wbqh+* zWr~qRttYjg{muGlf1jZo&-eNs!_f#6Wnck#i~OLciu>stEE2B0Oj>`Tc|E9rVVTsx z{iID^WTo3MTJQr4Su|Tm{zR5)TXB7PB_ho0tXC6o<>Eys%B@<|8pc?x@ts zL~vMe*WXuJtuDn0+D@<0+_^RkIJE+bQ5OanIhe!smMW@tX<>C)=Ly%G?9I&sL~Z5R zNm#Og!F~fnO<5sQo^+^9nyt3HF4i??!(d{M)#`6!IWanj+lWJI*(5zy?G7vbe*H#h zNLX2fiWOokTl%3p>cpl6S{7+VA>E#l+W_V0)Oy(h!`{Ak)ZV$u$jRYg*pJ`=#_%sT zp-4<^%Z)re7spi25~Z;TW=lL-80Y&MAzH1}-LQ=)(F3iE z94ON6#)gD_p6YC z5>o&XQkz+Bvdy)NQT2L(vWk_FbcC*CMQ&73v_F)2rV9#m8FS2X9pi#|DO(?_Ze6G* z97jhLWLP<4s_N9Q#{nX;`XU&O!;2z%bb$>;ZTE@LYGq7UtJK+;mTFT^RR^_hQw2}! zNHNji;!3L{ZX&RW+?&h`fekaZ4_q$R2e{`t#p-PQaoLd=+IlZ4Q3VsyO-(KHp1v~? zuo|1gnq3UObTLv0xH{p@%7l zocWRDk01WJKxj9bu~En9p5NQbqwBXzV5^G1k0pt8@UlHyOp&TTZ- z2D{akYOYp08EZP*N`QGH>WbU?O=W?-MAjlyyzoV3SNr0q`BM8xhz_-`cmqMPWt{w& zNk(#^BGyo=`Yy!N`pXoY77YQ?QKb({%~l=jYaP3zE>v+bjmaQlkZW06`hsw=wzg5Z zSlz6xqYH+6SUT;2aRpPCZ8GAs{YpD8b6*tRVs>$X;;cn2FG8y7xZOP%4Wo%w(cfHx z%DRA)(?sGTe(w4&P-W_({QPY}?_i$9RNwBvWr_>A(+TfGL`~vOZ-3PB0U^Idpr5p+ zk359B#!+`PXf^=ix>%JRL%3^Afs6@x=g~(+SZj7if{NhYof=XLr4B~DTNVMQMNJg}*7di% z>4}YDzdDd8-uywkG8zsdW@b@cgY(d+1}~5|`c3qDh76X1#kNDB87z!iE$9e*YQi-j z;(&7t!E##EIOD5z=*R!BrRd1Ef2r$S#M+b7M(;AV@YhOBJz zp7oRwoIq=%VXejGOH#O(v{=U~5Ti33^qbe(*c^)Zz0+alQ?RU_Qv365`0%BLNfm5g zD=Eqtyom)_ii)0@(Ut4XCsQPA(lVmV`zD6>`FhbwQ9&!sVWrW)2p-_)LRMAmrqx$_pL^~edg?=k0u)bpfh?BQ;2H( z*u|b2WEsC&!}h4X-M>-SQHNTb|6*a zDJqk&Y|+i{%qPTn%X~mS6Ga#0;yQZN1(OCmOkcT^zkd?|$MELEYTpW>L>iLI)-RU9@oiVeiApc+WQxPOFr&?{SFd*neaTe#S4Vzu`vFQ@H{TZOMuTR_thid z{|)#tG|Ep}hX1f$a{Ru)AK$QNc2Bs6@XLh5onNo}3HMW!)k__3Bz%PAGbX-&|ApA#4R`EY%{huNH&j^2(a5=$W>XRR- z_j$lYFFiXpMCZSRcbGM(>b{Q9kcuM$ZC%w`ZE9pH}$Xp%aQfcLe^oiJu=^E3p-%o*QG!-0O)?&`|DN z$Pa)j0bWY#;kOMat`hPIV~1G!bHG1=oX%zXd4>7s=jX_YW3$@3OZ@zNo+mW_li>o( z_4@w?@$-Xmeh2V5)bn~)&yNv5{}TSwgy#o#ewpz6l-S$%}?{EUQ8 z0e%8{;KO4>ggEK-S%ser_mAz_`{f0~4>GufkPtrPXNJ8>cz*uZ_X*EWMSm0IQ1Z!7 zWP2;&c}ORT)G$lleu4P;G2GjLi~Qtr-Xnf~?Dww_o}cveTZHEaVtt(O7k|?DCO$TD z-3Gj*chmpA4!Df33mjh%Grhhe@Z%@L8^;7N`4{2`;(LGnr@~K#o5Xkco6&L7zqg@v z<+_*knFCz-oCml%NqBxt*iRFlAD#O1g!{L0KF=-@o}a7nLBjL%{3MFS9P0Tk{RB~~ zs{am%pPz!ahxSVSOD7EX?Id{$_`=UI^>B&sk1(J7BJ!dcxmPR+?<71w z6=jj|{3MUZ02e*>z}PbI`ge$*A2j?S;=ez`|2^W@tCr7YOTzCHetFdZzJC6U=7V)O z`^C>$`3m718T{Lt4>L`Y?=t`Vz-c)}N%)f=1pQ9J^AlWF0GIKV_tz%z^V8}g;dxYo zw&a77J+2JIQm^a8&rf>!ZNN*!Nt5S@|4hZ8pW{mj9V6|^V;X*u@ceAl7XX+3y*#!I zyniKTB2^M|w&WNF?A^!j65*Y?-T=7db9QWC&*#SlAIN!hhj$RZcAw$<`MEzscpfxB zj$M*`sucF0V(FI&&(A@>PI!I*tAs+6eB2A}6U--U?(~Q6F88plQQvN>e-8kIA$AC{ zw}3qy_zVrOjS+{PxC37s7?)yf^y02MfyD;4X$P@Bx~_JX{pPUQC_gY81LnHB04?gmsiJ9!3Zly1%- z)eUrPjF|M(BljSfIFXQSdXIhBpO~RgAh#_&Gy0H_ zGP75(?nn6y9C}?*n|V>u!l($u!muGkiJe0p-Ij;@)Y;%@M+Ub+c_V14*;4t&#kOh7Z&5`^64@=Nf}_avk0%B?VSjZ&HfNBI_++O z{oq5!=a~jLZ9Ie-X4r{+K`Wu%0@EC9qV5tBt6OU@a=9AZT3Zw)xFv3+g~-CBoEeT# z`$16|sk#}o#FCVhjvZZ^4pJjgY^rHB=_2R^-TT)%T9Xco!DeEt%NtWTJY|J98*1W7 z@=e_hRbd~&M@WD=%EEkiHMTG;iq=kX-gxQ8{R6Qvw+hUnOEV+pbj#iLaM+LdP-E1H zkw6P`$Alln*wU`H#w8;<5dd|Q;;aKniBG~#s&1zc4$OgO4mjMFMB=E*F1QI3Ho zHp--BhrA3DxrK$4R!=zqd%9TVuG&g9GpI51BubuCH=y%V%XZPKGifEJYL zDuJAzQIW!w8Y46#XNlAxuGy(DdIfD_&svq3D^=kht!{ytej1>;PWz0DFq(Fs7|&ze zxn382R^NwBwqS;6AYE&wl4Jd423XCWHP(9@-s)VMJnNvaGHqO7K|>Gs1WWnp?sE#) zabSF(X0F(TLwRtc16L-b!@i|^ey5hjgHRSzYZ)ivlwo@X+hNn5fYhw|u6Bc<%0d-i zKkNoY-^14pq1?F9MG=<5D6enu*~I|gJ4`)9yz4jj>q5Z01Nd~8WtASvxGnF(Y_B(i z=1wRN#ZXSsu31HwwQ;QT0w6nHf0-aVSGOcJRvqu;%t? z7nt?#E>@0wYSIGJa4-c!GxYtJ(Elk#kOkd2I?i0~#lF5=p8l9U z7XObGcXsnOB=Vcs>Cckh(+4tq|DEaJM>6_7(tGN^8y(;Gz5KbF(YyWE(~=`H&FLQl z{NL}~>3RJnX183PdimJS)GM!l9Z>v4E!zJr(tCQA3=bOAoTP_ zyi2c~|4-oMouvLRlipLeKYIPW98Z50^xseD=ZNSjw;{EU)B1azeiJvsQ_t@*={@}l zE9~Xx?SF>!3(W9-B6#{ogbTg!ET{hjU{ZwVU+i;mzeD6Zz4HG5UA#=`OQiF3oD$=n zuZ#4P8T~CHcEQgY3#Pq93rF^G%`<WlwhVAJp z_7l^~<;P+Fh#MR$tYc7M?tgK!BTo}~v!}_k=kp3)$f?mB_JzO4)31~Md!Q8-IlbF8 zpC!G7rjg6{9lc!d$LH`)P@MiIL)_f#2^CJ?x1{**^q&3@h*SD7ChCEuN6~wRcY#>) z^76-H(vklCPdTQgrRm2Y2mDL<4`gsS1L~ETa}`%!2#s8)NN-P*|6e2h%M*~^Ih}*$ zNWdH>@4g_471y1zrT#z1efS9a&)+hNhcfxg=@*Znf8|p~fA>9JvZXnFjr2MHe&9=n z|6gKwPcEnT)cj!%^Z$E)Wki4Ch|I$u(=;2RiuwFEji5AV>D!Pj;m_qxbh%u@9+w>j h@ZUH7$!odi@GQumKi|dc9x;K|P2lTr7w}-p@0$&q=v={eIuO*8A5xYh`AhI?p^a^UU5e zJEx^y?`hRFCfRrWrub5hlBEPHIZ8LBYtxV>OQl&-Dw|HG`!)5IKvQ2H#?t&g36|g| z!F(ip*pi{?$l#ZlJ#@ZKg1(YF)gkS8O4M{qPgU~tzD?UCUQ)Fc&2}y!QQ!zghorS9}n^LpO&F;iq+Wh#)uAf!)PlRKwXofgK@ohsb*g zjz_#4Jfl_5d+H+$&-*Y%U+eiNdaJv*c=png;<;tzB@4@zmnsV@%IDp>s8T7eF0Bz| z@xroMvx}>1N~&s#7nPKiEAvWgX3sCFQYvd}swopdF>%aZP&|A7g5tR)WeXLON~^9& z>!*wuT{v`Daj&#KzFP0LYA-(BFmjx#=oF@?iXMNes1d|~odSD9@JA`4tSnFg&n(ml z_j1!_qXM3V8eAJ$W>Fxwr1_lTcE)tP)U<@@`Ija;Gc^BdI%9e%B%HF4&NL zjwwp3wYgkTewmvV9CtUAC<@OAwXw~7MCh~j4WLjuXt+nK6&y6IEa!e4~MR%wJI&55GkUCKuFy3#m(krQYB)MR^@=P=LE2aPOivj1Xuw&IRe$ zos#^$k33%^tGqD$~DI%h1Za5LU$<7QU ztY|KS&#*-@D_>^I^gr{57kiSwV#{Oq@vF86)IYB9&Gxn76;~i0(vbgGT}%JqeJwC$ zI?r@WjIiw?) zV48|a16C%ctzl*9w7YQx_|tSXie7%p-WmFAaFA@UHPQzKo&Kba)_F`!0RKUV?PlX+2Dz~{6h>R5}%QO zqQS6)zZDtJHt=sFb0a3UWBdY^u?B;l4~!Z)@Q?nAvOEwSzlch$zHZUmtRcUJ<-grv zcmS9I`ETD5*kItO*5|)XE!5q4NO4Cs81Cl#q9R!tKNmrFb?7tl{}@Z^Ps(1@)hjt`%6+80LUp&{p6R@7qbd!EIiK-& zW=nc)VnKtoKh+xyAymj_DEy$AotbFnn_n?u!$5ZtU8=EC^`IdV1tnDNT6Mo4V2}HW zOX$$_wy4$Cp*^R;55vYn{}j?+2mPpD?v45qsy7(65D$7gUxJOANEFz(u7~?`tT#{VFJ4-g{fT7Sw->32d^q%==Nk|u_9(FD10ekX3B5-` z8?v9E`aY@PqEe$Ncw8zFL%Y+bV53*TR1&HOo`>-#hHO3Qh@pDjooF~w+Nk3Vu1G)6&zhyp`~}xo*2u5BGT92A5ucy1^lRbT z+5ot)M%HUW_c0ov4cQBT@C@f$;}h6Rd~bX#dzgP7pAvcYD?Dg`!^`FY?0M@aj2r67UP34$8k+L-GC;d3Of_7aINn%g7Ui8QL)Ui#87= zU|E59g755-WOqSHdn3A%($)+7RF_@}pMTlb`afm8t@R^7c%J5c6W(IA{Evk0tem^L zT9cRd1bP}dJ^zckQw+0>hITn&hXY%8=NAfkvmtvWpV2kRHv5Z?tZ>)hac0ZnOH7f6L2KqSe2W_&q7HY!`nrC6@(pPfBd` zylxO`I46eaVuLa_xV*)4-vu!VZ{l5gbhqvNM@Ivm0PMjG=`kT88&&T#7$ECyPRSrX zfBtcgUe5Vl$uJMiyDOrBtv`weZsD;#6KuOa>Da)tfIau{n|k(4xD{1z19N4)t%2#p zm&Kp#*~@u<0;>N5XL=iW=e%g(0>6X?{_%0g22KL@yv$QlQxdkJ>TTeDS#N7#J@L)s zOHxbO6a356f$T=^NQ<{m>H_o>xVa(!Y~3lnwu)x(qBJX;$>*je*k*pzvB5cjJwx~- zX??m}g>XSVcGwMuR#`oPsuA`BdkR&?e@#nEc<*?dUGK_zn_X`J;n~WEr;qag0D^Lk zf5f+^5At8*gV*zK(hL22`QR+xFC!fzKQ|*j;=4E~@H-0^(T*;bd{6#hMl?IXU&~0a z1s&^Xei&d6T$vG}-}N;Dcu{Iof9D-(|hc&gX&f)bq)iz1Up7Hq*uO z`O}%HMmx~w73qfwbW-0-DMt#K} z>gwdr^-3D-AaN}MN630x>;A<2-Iuf|UzUq<2QA8QIWw|(Xm7jiz=s_hcn7d&2fv|r zAKQ{nq}z#fWAobHPqQw2-$xG+&nJ7Z)Grn!zgbX!tYAR?q2Ns|!LPOy)Ege;6Z@vJ zMSN9Xmw7ap(MR;X@AN^5QP9$WS0V@=YN*B2%t6ni@F{}sCy^jkg4B@zau393537f& zgPxC1334jW?H9>n__TiAZS&siX!ZiYw1@SZkf1}=>yp;PqTc3`-+=HO=YjnPv7NlI z|FD4RK#+rB-;I20|9?0Jtz3>cYkFREVC8)Usr`CY^}ov#|;NPF3i z>Xpxg4~2(vzeW9^Aqy<+XUkv`vGaoiGHm~PwJCgXi{evc-r`?V);TtiQcUVDf zInmYw%NfxF1yb#MpeHR~^VUI*w0;vrC#`6dFu~l{=)evbM zzjtu&@uMP8J^D{F?-08!4zn+wFmC{ZdD$c1xuR=?HJqI$rdIed9`^{}l&;j#^eCKTrfUgKyMWP;aR%A_9BLH#hY!zvs~8OhG#Jlp3xuC02r)9Y?zGa zR`Dj`l&kS6{=yB;8{auDSbjPnbctv4UgU{aF|rW-l<-)hPf75o#zxQMQN(ty#Q$Am zTS?%C>_Q$p#F>1fP%WRgClcYH;Sun$cF&xT0rsrmGlxXFt4W0x=_+Kstv7RtFISrC zN5rL2fJcMh?hb`5)?P&|5&gU zv!IV?#L$-t`FfQ?)q@5T3QDNzTSSc>4iR z1VK112pqG)AztR31Woqw4?PkujA?*CJ6CPU?n2h|g*MMjUOu$coRSTV4Tc{4^P$du zp#;>mm<#IR&IW@@;09|Q73^36VlTO~!TQ5sD)K#qtT%kYQ-<}%Q^<^AF)8baG9dq0 zmEUW`du}}mY_R?*1x^S7$ZfEm<4+7rVp;siut+?Jof{U-)^cNBs`aBmLV>5sBov&_ z0q<~Lke7(_$;!Oype~Yrr8)$Jhxnzu)QMl?yaC3ZqC#xj?fTnbI85j|kGUQ4pkX(V zW|-D)U@=P`@L`*O$q(@3Mdq59inhfYyaQD&jcMmYtg2jx#6^9-NJ^P^m}>-VUu&16y?5?kVkp-bI7Ay`z7R2zJ40=C{JPod<~@q z&#@;^j>HrB6*nq>!;6LkBi8jC6rdb|atg``KeV>ip!@}8Bgz@)TU&P%jPe-DAiR`Z zMA?8c!~!|I1!bU|jj{;kDwLHdyZi)slmU3J-HoyqPS^ICO2`myj>zp;P17gFF-YK0Y3KAzzHVj5i@q z=Px2p;Kz{<;g^sf;h{Iju~eRkd=(#$yqYgY{sM18euTe>{04p;`7`_y@&q1wOB{Qe zXCja1sxrd#6TLopYPnEbw;=&q?`D)nR`=JN0SIJg2a0iVUvYU6s$$Mr0@ zw(-zuacnftMBd8BBcH?p^#7 z`et;XC;I5mf}YGnr^m68JQH~XACLSjUyS^F-ZVXmeafFhK8+s+=1G2TdYl@4hWpKk zRc&W@%8XceuW&}38hn=D3Y`C0z7B=uEPn>1b^P!Q>dHCf4{=Lz9DAE5BmbNiB7cvU zAwR_Hk-x#8E{?M{<0;yPe)u{v2Hj}RojER$f*WsK=bDXdRQTA?_M{Pps&>;$(|#Ics<xn@|xPr6}@_;W%NmQNi<(lnWrvexYM&adqR<_+=GT_+AGQ|JbzHy4yrv;Qa52e zO6qluT9(#MI3&?ao;Oqq4{Rqq63a^p@6@QLR1$XAp-qFr1TAPS1Y<~;7UMZ=nUt2% zkZVb|0)QG9hAl%ejYl>Te`d-|&|&%=RAx4;#uN=+sWVtAK+xZXOlPuE9c;vl&?<$3 z6}N6bn002|6yQSWn(mN3(%b?-UkgC*qAM_z@glRdpvch=g^0dO2&pMhLiL8S@)||A z66^+7?8iWw8jzjApRf!jG4ni7nQG!x=uLl7!Hi`LrZCm;3iKKLC9V=hn5gUZBMD{J z9|ak`T1iES{yh{r9L_7oM_tqz-M2s(pNi}a=I~}@#(P=F6qJVP$ReysAUl}xQ)a#f zSiKp+@dOK{x}t`XD^5zttbPj4&m|C|7J=al2{_aeP`+Z;A;7uRrvQA-90Vk(767Lt zkfAPs&eIaeQf;7oBY_+>8q8-TP@t{_aE=8Y1b2~JF@yoMok3>2z~W}0v}6%rXaU`# zTe}hkl4S@olZITsl2AZWW;Pi~NY}WMAVsmyLT3Dh8C$5l2s46=G*to}?~vZh%(xu5 z0O0|r8`r^#@i%6SEC$h#8bCtZh)$Veppi7%K=L=HBM*rB3OO4s>@aJ~Kty=(vF*{v zh?)^NJq#d{*c(u??Lj)M-;I`z#8EMs(gJ!x*;XgebJyKg;Hvwgq zt1I5TpXg$BB?hOWu9)JH>60u($T5l4l^n7HK!IYBt4m$Uc+=8oH!UNBTt)`Dj0|EK z0V!6I8Vo-hwmOR-tgb|74BMip?q~KlcOzM5qy-ir>T-b@x&Sgl?Ey8$ z0<(N1W;hwNo=_SC^FI0qj{(RrkElL$g}kW!%S0G zVjCVY7{z?kTLcuC_M`twrRiU!u26KM#U)fVHN@1WXMKg@Q)Y4Fud`pAO1a(-=}P%}F1(>@dwGFHD>+ z4BBOSf%s-vVj#5J^b7G7`_Ti}Yo@D2nJJ8GG5txDS>|$Rcw13_g10Ot=VtH)eNCS0 z5fuEep8vJHTi_r_`J1PJFLp~gth{rBKJce%%s0a1H6T?QBV`U23bUS7Gy%h&k;R*qQHCx5l6TV^{(NYK#dQ- zj5fN2?+3nXcsMXg;qy?>4Sxdp(C`J2%?nQfPeFJBFiqjBf!U-)AjZ292=uhex~vrFO^EaaC0Qxb zn-J;=%CJ(XHzC#&lx0P%PgYEb_5|iwDcYM5?g=WeQn)uE-oFcxA|>z)-+xE6`!vin z?N!4A(V4(y1iYaEG~-PBG@u4PFzwfX_la^q170NHO|J}`VR}mg3W@Tz1Z))knbWvO z3)RD51EqOv`!2L>e-`>#ln6X((?Z2Y`veO#F73q5wtwp54)$?7Xh&cc<06f_E$}*M z$6!X|EPmilM@l9P(!%Lp92ZbHZF_Nkk$|3x@OpHKV2Asb_;c|Y0`R8KGv_r_cXLj97aabwI? zB5opLuRtK0Vi?s^-Pk})n_|oabSDCjp>Fx@5uB)*UTqhp|K2W2?}_{XJbq`1QH1Kf zk+kLc{Yr>HQv0t+>WiNd!xB_SCdM#30e*I5T1a4h;|uADknx4|TLAp$ zkk0f1_^bc0~VtNe1O@J7?P%WktCRB^*qK=pz zdRMnVEv8QZIjETryQ|A=5z4J1lv_n8w~A116`|ZJLb+9ha;pgCRuRgrB9vQ2D7T7G zZWW>2DnhwcgmSA4GX&$e)Q;O%cXg%r^RDB#e#MKWwipOSnmZZv!21jvuf=LX`S^Jp>-Ty z!VK2W(T*|L`XNvz>qH2cm7r_9w$9}~1d3wq2^6#52su>=`jX<=Wu|+HTKxo>UA}IZ zer4uH1Z9WViGF9HH^GI9L+nIXBxH7oo#?8BLL6cz`cpy@MXeIba4djklcEY*mV;h9OiV&K4zUxd5-MPz7Gl7iJ;6BpvHX%yLJ5l z?1IH%ir+&h0>uXPs~S!?xj~KkO@qV^^}7a$9qNh(h#l&x28bQ%Pp=HrnEuj$LLL9= z?#JzGFn+9S{0t1QMORY^F1l*s9@gb zo@6!G!i(=ow%1`QuwL;mps?s#y!?CkBlo1(chmIh8&8LE7TqZ?Z5clWE!lxQU~RIx z#KQZdNVM=-YZt4x2JwFYy3@R=J|gd17{+qre-M@^6E*u{5aZcU&FT;@)=BQj)37ct zc95A*sh{p1fa%E6O}ecpExN5MrKZ?fDA``Kfdc>EawT%FEb#slM=yNrS+g-sBi-pE zjX-0rMbzT6<`|lscqLQfCXhRyG#eu{{zxysd;1cfz?0?#uR#2-)RRWDaYc^g-0T(D zevtTwk@FhOJnz(dqPro_C@A8Y77dm^dGG!?EAP0mr`XVO$TVKm-~3js>BPAReNpP{d= zzsRE}j2Wa;Z7OiZk^D(7oa0(f4*ATO@i6r1n)bR~LH@kwde?+T3MyY3dy{dxrd@6q zMPc@pG4nLmrrM;$jH0fdGNw^0=zGjwf=_$l`7vPxe`5?2j|ojvVqWDBuearfP;;w| z#$m)9tairnqzye(R|ucHp`G(lc^JH*8qw%wT zQU|>oQexY=Pgg%vHu9wd)!GW3;Jzvh;Pa6^CU zt*&XeTUv6T7XhcEzk4>i+@il*3}T+?ni}0M3r*XthMZP0jTJdK+YDK9aLm&A4;nP* zkB$+eyxkB+dym>w6!R>Z@{kvvl=whz(J7@X_GU^kOKJFDHH3=?FgJ#85h4DrA)00; ze$rQR(#tocn2{Js7G;bQ5?H!;d747qpKUNkW(pQ%qtAEQI0119f6O*ykUy~4r90*r z(it>iMoDj!0(J|;lrD>^=P7Kip@(#KkxRH`o^&Y9ZQ+&qhC$LRc}o0!)Xi+Y@#QpW zz+B&KJ4*(LwSW&V!+_Q`ZFkECZqTPt1H#Xug(2hgedL&})jXf0&w7rwsHUy%m=mduIV**Ocbr^JTGFGJLYBnRAap5V?XaVf$amtKoEIWddL!Cmye_n-J#)RswaT*${a*}4b^oAkY< z(uLB&W-mM+jqv)W*hrz(U$4cXA|-w|sr^M~+{O=hwfv$JUcxJx)bgtr7Fz!BYPq5l zp28GU;-`}%9@iN!@XSrN-olp0b$z5QqotN7bcI>?_JdZo7>g$*Om3s8zkE}iocd4e z+AnpeeMZ-hrn;`_akrf7&+4?fJ}Kr34ajr4o>KG7m?-Ma^Imv<%-b|6UeJZo+XK$_ zVrG-;cYEP!cn~EUlcK~DG0Eenzw+b zml7S<|6E=B^?!<7_=RfxrHkZ!!?*s&*s=V?oc}@{EZ4ghhrjf~MXm>F;J#Ax`9JS- z$a!!|9qJ37VzHlA3*=%ikZa+L+O`(1)5dsEHD+k7zb%bG zo}HuyuH*YQ+fs!1Bz15H@k#0g3C~ng`cP{F)WGZf`sPG&ywBoQV|lD}PovLEDR0v9 zaH@gn8fl1+wA~2@isvP#nyu{@N{WGo>?aoZvACg9lxaTxFNpsOQuh-}_ZlYTvwvcv zq=K1B{B7jGG0b=X<3lM7F@+M_o{w)CU3XDr7{ijgA|BBG5c3f~y~XBGsXvoh>_Pa$ zqASv#i(_{4;H|c0rM}oxD8&p2;DuXb6T)b=R5L3*D2sjK zFiF;U5qsS+pYnBE;}ZX_$*&jEit;BOfn(kz-c>A;T2Y(wl%6yBv8@paMp|&|yyyZY z@n`LMd9fxO^CmZK>yq;+wVlF@W3+zPXk@m%nffheY6|Nv{WQfT`jo;n#}~z{;$_=n zEjwrygfQa~-nh+HD0o6x53kIlWMK%qf!^ZOrb#hfsmUw!lj~1!)D9?T}o)K5NiZa+|{)T8pN!vkT_oqZH ztV9Z37u$rNp=q(lcoZ8Cr3e^EiEV$6gavoOo-}Qhrin1KXM$YhbClEqQhvYjT!fVR zP8N{1VG^bp$*}ufa>h+bTh2dtAlCH}xx#IHS`*3fiAdQ$ zl{ZA-^p99KP3tgS)r#UMC?6A<)iGI4UXP1R;PV_S@ zBOtTeLN_P+0mXi)fL^oE)ro$lu&%{IS10;e=2~dbu1*Xl=R@H0qhmIGk05^>v#ozf z9|;jD?}T18iDg z|NjTr?*HwjWD3;z4zLFT@Eu@xxRlHX#dm;R1i*KIP4@T>uzh!ugZ{rSC2xdK+odF3 zm9@W=e4)mBDVYO4x|BR!<2%5v0?OY^W9Pk;B#ie`Qq-}sVjuNgNl=^jqV5ua)g&)mC_v{U2eO=y?2BJC53zM2nosv zUw~gZQ0S77z^rg_GK)Jxf^x#WcZ38Lg#X(e;nhdm?g&@IT;Cm`0K9jE0`T4u3P7B| z;*L-N-aA4mLqP_2gaYv15fTtG74Oo4ff1s!Yp~G;28sHtkYPj!mINCSLS+3xcq=ee z*54(bFj-Hadbq5QC!Ppd?@D#6tY0D?o2*yy-yi$Nz8q8*9XA;ES#&#A%8+IIoL_w0 z>b^|0*f_e{w&)xh&Hg-eun&z3@-<#r;Hkj=6s%rj zml~&Y)~Kl@v0muAUz4B>i4xoX2uW-g9PT_RGQ}n|Y;;I)rY(yMx>p0|E6!A6zfCCY zsVOXz`k?S!#wIO9qd$jU@J=!=$DkdtmL52bTh2dFv*wxtx<3Grs5ZERKgIj}%!4RzY$D4^} zOjCw9Nt}T@J}}Wa81Dck#tOq3sOEU3FgzUsmOi2lVuH#cP8Cn{eg+K}pFv1M`KS5V zNLMHeGvzpzLt}tJaZ_`F9hx(GS?&N!P$=sb6z;E!i;5$;5WF}ChckbF*$=V?zp0@M zYL5ujoPZGt>kdm1%Cw#fSI`G=N+MKSNf0{%RDnRMY@$B`r0!6s?V4!FxOt-|K*rdgL4j0YGAj5(CC-?F`Yre?$6pivUdP`-{HY8dv6|2@-ghVycjbPN z!Y{ed<25pU8ZraE*s-YIZ!C3T%wVm1#1Qd_fjxIa9Y6JA&vxxB1qS$_E(g;W;KE3c?3 ztyXRm5|c{9t8380Z6ynp5o0I2hGq80m#=)t`**wXb2F1G+Z!V#=Rki+RbIuCa;@q7 zrIn?#Ylcse*)!itg_uS{NP4Ssi~m+yybYRjw3=9QPuacRF#gCDb*RXZ1rqf$(@ z+*uV>HN&f@&(-r|PErqF+Nx=iw)Cs%p!Nso%=n+Va_o z_*EQ1ZPQ*{Q!-EdmQF{d9C6O*$Zpul#&i_r>Q==th{t=?V?$wRrt}J^3vk++C{Qu`Y9h*TUYYHTUD`4>sTR1 zNf|pr$c>vzdaB_D@&ZYq^|E;|rMO0_np06bYhkIkRq5)?b~A&g7rFSKhoWPu@f$)A zDi*59%fc@cYpST%eB)&suRI*YfB&#=d~xBp;#v5~pjwPZNp-1@5wkK+w8oz~oXFoi z62Wth#PQ>Yd+-%Uy7RvdNAkChgb&ATR7k_3lBxyhcy-Mj3`_Ccs?t)pPz*0omsFM2 zlonUkfMHp6ad~M~l@KD&ibnaz?`w3_!lJ|RmBfs>1Jl}NGVbAO*Bp|S`jApEC z219nlnm()`cS3t>u_{DcWphf4=akfxD8;wcl)ziX6?5mpg^+RJ-+OEyc1J6AKK^J{ zY;kdA$(+7Qacy~Rb?Ka5WIdTi^L1XyBHna#QnartqJ6Iu<(lB%eb}}6kE2&re*L45 zn?L*bC~MyHkK2vB;)9gT^!XKwO4H}gDJkopHDEw`Ud8O%MOfX{>6MFWmlRi4Roq&- zpr*LIqNa3KSvgu&c>eB1{IlJGy54CS{I7T73TkQjrdL!!Rj19zr{reu^4d)%gS7vl_nh*Tfe{C%Yyz(|4B)A1!!4A25(wq%eN`l-(JxQCHHj z0ur`yk$Q1<+U~qTqwdhC-sizWo(bwCje0_(;`CFbIlKhaT8--c<^ZQ$BCY04pl;Hr zuJIC!rz??m@&lm0piyUPRPV#$0e%V8QySI#9RjvXk*@LhZ|qKb!=V0pzeJ$%rex*g zL8XHtqN)=lRxb-BgRcU0uts%hRPBUJxsksJ>RgR_MWf=0LZsXIX;A3{J<{y`TEW}j zXL#rtd*MEfnlVwzc>Vkl@HDdC&;9pA74xfSyJz+hpk3L~X{BWgCx$C7TBz+(5nuJK9lx6JBJw-=>2K}Mb>Iwze{-~v zj@P&!;i2Ezoz0+PoRz#ABsxK(zD3kAr!;Ek%YHgL3ssy-(Mrkgojt)=kfg2i`EMfd z^5^vW@}1w=`wjz4HqF#l8~h^DSWUk3@z*rMBkG0YrxDoqcK2O?L(u-xm71Vd)NAsc z--@0x z@_grGjzpgOqurUUQ7aY zwF448OHg`C!!PV9VQ)WfRu=kQy8-`f1k@2|5^ zugYF&cz1$$4d3{=qxqvhzGuN{b4q8`&Vvzn|HTUm&o$?7`fDc3;3a>hTiSk#ciUh6 zE#B9V_536t??3wP=FV&VE#80YJ;A45>mTaY5gjfe zdCR+BInDMncH@?vD(laVY&og2A%6Q7OQv6XZRw(8{rp~fT*7@VTV@gb{c{ptW8d;9 zV9TO+B>cvf(>fN%Zr-v=Wp+!-Nr}zbvQy9OO}q75{?f5%YvpGWy;M6)rbn&3Evb6e Y!{Rw7NfWk|=vjZuz+WYJD=CQkKbR%WM*si- delta 23637 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 ZPxF~(L2 Date: Fri, 9 Feb 2024 10:08:46 +0100 Subject: [PATCH 71/72] Test pow negative Zahlen --- build/test/cache/test_add.c | 36 ++++++++++++++++++++++--- build/test/out/c/test_add.o | Bin 6144 -> 6584 bytes build/test/out/c/test_add_runner.o | Bin 9104 -> 9240 bytes build/test/out/test_add.out | Bin 64792 -> 64912 bytes build/test/preprocess/files/test_add.c | 36 ++++++++++++++++++++++--- build/test/results/test_add.pass | 12 ++++++--- build/test/results/test_template.pass | 2 +- build/test/runners/test_add_runner.c | 6 +++-- test/Calculator/test_add.c | 20 +++++++++++--- 9 files changed, 96 insertions(+), 16 deletions(-) diff --git a/build/test/cache/test_add.c b/build/test/cache/test_add.c index 6d44467..fe4db9b 100644 --- a/build/test/cache/test_add.c +++ b/build/test/cache/test_add.c @@ -20,7 +20,7 @@ void tearDown(void){ -void test_adding_whole_numbers(void){ +void test_pow_N_N(void){ @@ -28,7 +28,7 @@ void test_adding_whole_numbers(void){ double b = 3; - double a = 3.5; + double a = 3; @@ -40,10 +40,40 @@ void test_adding_whole_numbers(void){ - UnityAssertEqualNumber((UNITY_INT)((42.875)), (UNITY_INT)((result)), ( + UnityAssertEqualNumber((UNITY_INT)((27)), (UNITY_INT)((result)), ( ((void *)0) ), (UNITY_UINT)(23), UNITY_DISPLAY_STYLE_INT); } + + + +void test_pow_Z_N(void){ + + + + double result; + + double b = 3; + + double a = -3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((-27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(36), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/out/c/test_add.o b/build/test/out/c/test_add.o index fbad07a993712ba43a0163ffc6c8234f5a7c501f..463b836b0160e4ac31572b60b1ae8cc9e4498712 100644 GIT binary patch delta 1191 zcmZ8hPiPcp6#w40GrKeU?au7(Y<6}wG3i2dH$gO@F!>|9DWQB5c_N8_4$`ANY`d3Gunkx$qPCQJ5N|oC@#rn$A-*>|YpV~w@BM$j_kG`+ zSr}T|w_KK6PGfLcbqgUjX^G{BjqeUk_mlK1tCN@ioP6-$#rF1g=)KQYA&l{W31fXs z3ZV-ySda6zgSY?FR^y!q3cKJEB=9zz@{;V8zd+;<;@W-?!ZJ>hXyZ<~3sU%%EF6h( zOo2D1(`_c;)?XAIVD+3On`|799uYg*;-P3=^tQzr5#$FzoI3j<-=cPdd>gOIUe9Dl zu(6ucKgDWxR$UK$7Vx({(o`#*4 zqauCXeH@>1scgScs-hx&8&RLiDd7VJH3_`p;04g|2N zz-Umo8c`*0%4wU$Zt9v&CIr5W*sz5^n=V{IOFKH4uj+|=4|VI2t{bm(kR?aYS3Wik zI5HvtupaGd-PZ0xV(!?Px!UZh`Py`C8k<@kYteFy^~1I4*3IZSiFtFSw};@)GbT~+ zKwns?MLCg-$`gs0fuCmz*vx3H$EF5Q#(&~2jyoDYjc3ynl#vl27K2>M#<%g33IPRi zZ0Py_x*$|Ms0MIG8MvT^;5vS*T<^y)nU5WzrG@(Mcu~3VrnRbm04XF6CVzt`_&PZc zFI#o14~ntiqJ+3cqr}9FO`UG;;vL%^_&fCSO!F|Uhx*e`vU0d#yV$giukEmICnFo` z9p1s|Oj+rZcrC2Fo9%efaa#G*H;`T+jft(i7F+dn73hucWPEcn!7l0!H!{8)2734$ z4mstHIO~-4VXjN}?_kp@o0B0*6*nB;G{R4$iN&mMUgCQsief$M%kMS3k*&zJG(OK( z%zNSeE@83Dmz!xk+*OfZ>Ue|Ll7Y{O{bXVxSCP-mpo`gD8J^*4u4-!9PQY<5+inI@GFLH9w>2XZn|p*!LbfFvxTO delta 884 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 YaZLCcz?a31;veHl6Y|L@Ux|4C0~w*q&Hw-a diff --git a/build/test/out/test_add.out b/build/test/out/test_add.out index 6fb35d35bdb2510a27f08c969d87b20434c70207..f62e0432b8d982f21403500091754da8d51da868 100755 GIT binary patch delta 12391 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 delta 12321 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 AYXATM diff --git a/build/test/preprocess/files/test_add.c b/build/test/preprocess/files/test_add.c index 6d44467..fe4db9b 100644 --- a/build/test/preprocess/files/test_add.c +++ b/build/test/preprocess/files/test_add.c @@ -20,7 +20,7 @@ void tearDown(void){ -void test_adding_whole_numbers(void){ +void test_pow_N_N(void){ @@ -28,7 +28,7 @@ void test_adding_whole_numbers(void){ double b = 3; - double a = 3.5; + double a = 3; @@ -40,10 +40,40 @@ void test_adding_whole_numbers(void){ - UnityAssertEqualNumber((UNITY_INT)((42.875)), (UNITY_INT)((result)), ( + UnityAssertEqualNumber((UNITY_INT)((27)), (UNITY_INT)((result)), ( ((void *)0) ), (UNITY_UINT)(23), UNITY_DISPLAY_STYLE_INT); } + + + +void test_pow_Z_N(void){ + + + + double result; + + double b = 3; + + double a = -3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((-27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(36), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/results/test_add.pass b/build/test/results/test_add.pass index 534e901..4deef9a 100644 --- a/build/test/results/test_add.pass +++ b/build/test/results/test_add.pass @@ -3,16 +3,20 @@ :path: test/Calculator :file: test_add.c :successes: -- :test: test_adding_whole_numbers +- :test: test_pow_N_N :line: 13 :message: '' :unity_test_time: 0 +- :test: test_pow_Z_N + :line: 26 + :message: '' + :unity_test_time: 0 :failures: [] :ignores: [] :counts: - :total: 1 - :passed: 1 + :total: 2 + :passed: 2 :failed: 0 :ignored: 0 :stdout: [] -:time: 0.006848459015600383 +:time: 0.007150935009121895 diff --git a/build/test/results/test_template.pass b/build/test/results/test_template.pass index 6bdd5e9..493caaa 100644 --- a/build/test/results/test_template.pass +++ b/build/test/results/test_template.pass @@ -19,4 +19,4 @@ :failed: 0 :ignored: 0 :stdout: [] -:time: 0.00312035801471211 +:time: 0.004427945998031646 diff --git a/build/test/runners/test_add_runner.c b/build/test/runners/test_add_runner.c index b5d375c..6897488 100644 --- a/build/test/runners/test_add_runner.c +++ b/build/test/runners/test_add_runner.c @@ -10,7 +10,8 @@ char* GlobalOrderError; /*=======External Functions This Runner Calls=====*/ extern void setUp(void); extern void tearDown(void); -extern void test_adding_whole_numbers(void); +extern void test_pow_N_N(void); +extern void test_pow_Z_N(void); /*=======Mock Management=====*/ @@ -75,7 +76,8 @@ static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE l int main(void) { UnityBegin("test_add.c"); - run_test(test_adding_whole_numbers, "test_adding_whole_numbers", 13); + run_test(test_pow_N_N, "test_pow_N_N", 13); + run_test(test_pow_Z_N, "test_pow_Z_N", 26); return UnityEnd(); } diff --git a/test/Calculator/test_add.c b/test/Calculator/test_add.c index 8eee0b1..e6d3a56 100644 --- a/test/Calculator/test_add.c +++ b/test/Calculator/test_add.c @@ -10,17 +10,31 @@ void tearDown(void){ } -void test_adding_whole_numbers(void){ +void test_pow_N_N(void){ /* arrange */ double result; double b = 3; - double a = 3.5; + double a = 3; /* act */ result = pow(a, b); /* assert */ - TEST_ASSERT_EQUAL_INT(42.875, result);//3 * 3 * 3 = 27 + TEST_ASSERT_EQUAL_INT(27, result);//3 * 3 * 3 = 27 } +void test_pow_Z_N(void){ + /* arrange */ + double result; + double b = 3; + double a = -3; + + /* act */ + result = pow(a, b); + + /* assert */ + TEST_ASSERT_EQUAL_INT(-27, result);//3 * 3 * 3 = 27 +} + + #endif // TEST From 1b48e691efdb23d6f5878a78151feea8ae61c6c9 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Fri, 9 Feb 2024 10:18:03 +0100 Subject: [PATCH 72/72] Test factorial --- build/test/cache/test_factorial.c | 47 ++++++++++ build/test/cache/test_pow.c | 79 +++++++++++++++++ build/test/dependencies/test_factorial.d | 4 + .../test/dependencies/test_factorial_runner.d | 4 + build/test/dependencies/test_pow.d | 4 + build/test/dependencies/test_pow_runner.d | 3 + build/test/out/c/test_factorial.o | Bin 0 -> 6112 bytes build/test/out/c/test_factorial_runner.o | Bin 0 -> 9104 bytes build/test/out/c/test_pow.o | Bin 0 -> 6584 bytes build/test/out/c/test_pow_runner.o | Bin 0 -> 9240 bytes build/test/out/test_factorial.out | Bin 0 -> 64784 bytes build/test/out/test_pow.out | Bin 0 -> 64912 bytes build/test/preprocess/files/test_factorial.c | 47 ++++++++++ build/test/preprocess/files/test_pow.c | 79 +++++++++++++++++ .../test/preprocess/includes/test_factorial.c | 3 + build/test/preprocess/includes/test_pow.c | 3 + build/test/results/test_factorial.pass | 18 ++++ build/test/results/test_pow.pass | 22 +++++ build/test/results/test_template.pass | 2 +- build/test/runners/test_factorial_runner.c | 81 +++++++++++++++++ build/test/runners/test_pow_runner.c | 83 ++++++++++++++++++ test/Calculator/test_factorial.c | 25 ++++++ test/Calculator/{test_add.c => test_pow.c} | 0 23 files changed, 503 insertions(+), 1 deletion(-) create mode 100644 build/test/cache/test_factorial.c create mode 100644 build/test/cache/test_pow.c create mode 100644 build/test/dependencies/test_factorial.d create mode 100644 build/test/dependencies/test_factorial_runner.d create mode 100644 build/test/dependencies/test_pow.d create mode 100644 build/test/dependencies/test_pow_runner.d create mode 100644 build/test/out/c/test_factorial.o create mode 100644 build/test/out/c/test_factorial_runner.o create mode 100644 build/test/out/c/test_pow.o create mode 100644 build/test/out/c/test_pow_runner.o create mode 100755 build/test/out/test_factorial.out create mode 100755 build/test/out/test_pow.out create mode 100644 build/test/preprocess/files/test_factorial.c create mode 100644 build/test/preprocess/files/test_pow.c create mode 100644 build/test/preprocess/includes/test_factorial.c create mode 100644 build/test/preprocess/includes/test_pow.c create mode 100644 build/test/results/test_factorial.pass create mode 100644 build/test/results/test_pow.pass create mode 100644 build/test/runners/test_factorial_runner.c create mode 100644 build/test/runners/test_pow_runner.c create mode 100644 test/Calculator/test_factorial.c rename test/Calculator/{test_add.c => test_pow.c} (100%) diff --git a/build/test/cache/test_factorial.c b/build/test/cache/test_factorial.c new file mode 100644 index 0000000..debbcbf --- /dev/null +++ b/build/test/cache/test_factorial.c @@ -0,0 +1,47 @@ +#include "src/main/c/Calculator/calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + +void setUp(void){ + + + +} + +void tearDown(void){ + +} + + + + + +void test_factorial_4(void){ + + + + double result; + + double a = 4; + + + + + + result = factorial(a); + + + + + + UnityAssertEqualNumber((UNITY_INT)((24)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(22), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/cache/test_pow.c b/build/test/cache/test_pow.c new file mode 100644 index 0000000..fe4db9b --- /dev/null +++ b/build/test/cache/test_pow.c @@ -0,0 +1,79 @@ +#include "build/temp/../../src/main/c/Calculator/calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + +void setUp(void){ + + + +} + +void tearDown(void){ + +} + + + + + +void test_pow_N_N(void){ + + + + double result; + + double b = 3; + + double a = 3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(23), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_pow_Z_N(void){ + + + + double result; + + double b = 3; + + double a = -3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((-27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(36), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/dependencies/test_factorial.d b/build/test/dependencies/test_factorial.d new file mode 100644 index 0000000..11420b1 --- /dev/null +++ b/build/test/dependencies/test_factorial.d @@ -0,0 +1,4 @@ +build/test/out/c/test_factorial.o: test/Calculator/test_factorial.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/main/c/Calculator/calculator.h diff --git a/build/test/dependencies/test_factorial_runner.d b/build/test/dependencies/test_factorial_runner.d new file mode 100644 index 0000000..961d380 --- /dev/null +++ b/build/test/dependencies/test_factorial_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_factorial_runner.o: \ + build/test/runners/test_factorial_runner.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/test_pow.d b/build/test/dependencies/test_pow.d new file mode 100644 index 0000000..d76ecae --- /dev/null +++ b/build/test/dependencies/test_pow.d @@ -0,0 +1,4 @@ +build/test/out/c/test_pow.o: test/Calculator/test_pow.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + test/Calculator/../../src/main/c/Calculator/calculator.h diff --git a/build/test/dependencies/test_pow_runner.d b/build/test/dependencies/test_pow_runner.d new file mode 100644 index 0000000..d2634ed --- /dev/null +++ b/build/test/dependencies/test_pow_runner.d @@ -0,0 +1,3 @@ +build/test/out/c/test_pow_runner.o: build/test/runners/test_pow_runner.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/out/c/test_factorial.o b/build/test/out/c/test_factorial.o new file mode 100644 index 0000000000000000000000000000000000000000..ebb50e00e7b4ff9af669b3a5de54a0c1b4ee5346 GIT binary patch literal 6112 zcmbuDZ)_Y#6~JfrZk0ToCEgkq@yR1lxahk{fIfj~$tQksGk6-0S& z=FNINSxbnHbTjY$=DjyFZ^pZ`{_NDL6S}4`Su}Qxt!k1omfO54m$+DB+u1huZssHJ z&6Y3yG(_+-nuUOlA_VN&`;O7r7pDOJfdWh_oS#123f9g`P(@Y47m86+#xA`Z|9dlOnz7D zS9g95^&dgCaYOPUX!NgW+Au7Kr+q80`*^)MLUwR@53dJ#eMf}s=khqOkMnwx*JWN` z;q~)u6AZ@mm$k%oXp=Z(I@JcToAX0@mj@_u4Kz`mK=u2m^2j}Cmgq_?L30VaP++}S zX+1n^D1HJfDB3r!gH48unQk=IuQak2)3T&I#<mOf&PrZtGQiO1$DhE8W-4k&b+8XtrA?CZa` zAB}rL2s7E&KfOiZ-nCfF=1K068OEun#msd$^H~6?C}4L(igcbPe(ot@j75)n2thax zKZB)M30h6l{?*%q4QvaZH4t|5!wYIybZxhu;S{aJk>n#Lj6Swej17Fdp?$&FdeqRC zje+}&?w=dIzcGwd)6n#NTl55ko}HOKd#*A$edfVaJc@PT=JO=R(t&%llTfWqZ)+`Bv@m{DRx@?V8_l^PUfe=p{O8 zEz4`j?qX8xV+5YSTn{}H0(zxf@u0QoeV6|p~cGY%cy(Y@zr`dd~ zWBIY&m@yVOUbF7lbGcf>ijM+guaiCKf$X(#bzvBM5PFS{>#s#|`v=31tUIw0HrELt zqs+HGzcO!ODw|fTG7P|SCp#CMbzR{U@Wr^c7qsG+jw_FwQalA~h{@NnW1u6V1~C%nMbI= zR@ts&wLG)IYT*JwVJ9ah#&Y{-tAXPO^gzfL1FjaII&i=o8oraTc*fzgEek(57Zvv2?y{;=>j(o}EuX?>!n>o^zy!@hg56Uuu1 zpAy~T6)FAoheQDCQyY8?C)qpis~mNB(8gil{1S3oUqZZbWBA(Fi8M%r?_^0tn_&DZ zuoi-r5SM{99IuU=BlDDRbG*|bm%3~RiQ@$ji@Z)802%j9EtvB-e)~xhkK^!ZwDzRI zb87VuZ=FXrA9^oM0AGc8X8!%YD5J#jEa81h@@9l%)+Co1$2(bcw`69KrP?Jn7;qX!U%)PVvPT(JCJ#dsB%+!?HsP zKSOaIP`F%=ukbNi@3RVjk96@3CT`RiTK?T$RqTgp++Qd>P5jryu|XuCn{O)iazFm0 z*vs|GzkS>ndiq8F87g{-clRBDWLUT(Ke*y z+AYiU?M0uNbCz#0v+8-wbUQ-fy>oUosKYg9z5_N~wyIUvJ`ZN-OvtsIx{a=@3@%-^ zbb;}th`7S_TBnV-MrPtg(S$1xeBi(b59xI$FySV-0AD9d6xVK4=3T38(?UOBlLLRu zxjb(&T#1AQ38P0gF3- i$doNcclHLp(4d?VO<1eB#%ad+mudd5hn_-E{r?N2V#|&I literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_factorial_runner.o b/build/test/out/c/test_factorial_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..121ea181759f3110f4b8ce8b6b50ec40982614b8 GIT binary patch literal 9104 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

m3^YXV%wh_$l@i)o?$@)1%=XGHemk@b%0e z((s?LZfW?9TyI{(;X|C#?HZ12AEtXXypikul7^45ep18l=X$@R;jb|MtcLe6epADhnE$?pKdtO}{;GIRGOp&e!ttDn zX$kXHoGA&5HJYC!`?*5n$C$rO<8$5{WGhO2oytKsTBdR@cS`zRvC=^R`@Lhd>;Pbv+;;)A9h6~6?fwz zk|-8M#3@LHN>g^CGznK069wRq98V-1`ykNJm?0;gpM(n-FNU{a$^`0DB3+V^o-E|> zdPzj^MkxYU8E_j4x1+4X?N0=*oThBYoo2sw+M1v%M{eo=mxaL`$26e1iLtKVt@Cs! zv+?YSXU$j{k-}O&K#udISOPHGs&`cVpM&om;{1ApB-7J+MU3n46@a5p-F}vdY8_zn za{Ws01_7zwxr=4WUY&0d!=%^0wF-v3vrIgu1*Y5M{YbU`JBl3!=?o7HswnFHhwFjv z6CjZ_@ri$s%3M7)Rp9rajv;p^f0%SBL(X;XIN;UdAIFISN!erk_}!t$kLPvWCqTmG z`hSCpC+XZQlvS($Uao&P8({tTouSu%CtyfXae_!`fQefc7(W%qy}+(!e-Bm$=@CVg zYPqcnei-m-_N)1DhV$E-l%2{SgF+>HdDnUmcb)>B`y`ZMSL^eCH`|9jwkWFpQ}AgJ z(5G%c#rEeEk#pVtr+`-*zcYN%@GZ8(@xvuW*{k)VTHR=p=ELe!92kD%V@SF^&Pi>E f0TCkHOqry literal 0 HcmV?d00001 diff --git a/build/test/out/test_factorial.out b/build/test/out/test_factorial.out new file mode 100755 index 0000000000000000000000000000000000000000..b7a6cece0d29927c09c14346b915a024efea1091 GIT binary patch literal 64784 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 literal 0 HcmV?d00001 diff --git a/build/test/preprocess/files/test_factorial.c b/build/test/preprocess/files/test_factorial.c new file mode 100644 index 0000000..debbcbf --- /dev/null +++ b/build/test/preprocess/files/test_factorial.c @@ -0,0 +1,47 @@ +#include "src/main/c/Calculator/calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + +void setUp(void){ + + + +} + +void tearDown(void){ + +} + + + + + +void test_factorial_4(void){ + + + + double result; + + double a = 4; + + + + + + result = factorial(a); + + + + + + UnityAssertEqualNumber((UNITY_INT)((24)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(22), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/preprocess/files/test_pow.c b/build/test/preprocess/files/test_pow.c new file mode 100644 index 0000000..fe4db9b --- /dev/null +++ b/build/test/preprocess/files/test_pow.c @@ -0,0 +1,79 @@ +#include "build/temp/../../src/main/c/Calculator/calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + +void setUp(void){ + + + +} + +void tearDown(void){ + +} + + + + + +void test_pow_N_N(void){ + + + + double result; + + double b = 3; + + double a = 3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(23), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_pow_Z_N(void){ + + + + double result; + + double b = 3; + + double a = -3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((-27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(36), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/preprocess/includes/test_factorial.c b/build/test/preprocess/includes/test_factorial.c new file mode 100644 index 0000000..f2efae7 --- /dev/null +++ b/build/test/preprocess/includes/test_factorial.c @@ -0,0 +1,3 @@ +--- +- "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" +- src/main/c/Calculator/calculator.h diff --git a/build/test/preprocess/includes/test_pow.c b/build/test/preprocess/includes/test_pow.c new file mode 100644 index 0000000..26256f2 --- /dev/null +++ b/build/test/preprocess/includes/test_pow.c @@ -0,0 +1,3 @@ +--- +- "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" +- build/temp/../../src/main/c/Calculator/calculator.h diff --git a/build/test/results/test_factorial.pass b/build/test/results/test_factorial.pass new file mode 100644 index 0000000..ede2338 --- /dev/null +++ b/build/test/results/test_factorial.pass @@ -0,0 +1,18 @@ +--- +:source: + :path: test/Calculator + :file: test_factorial.c +:successes: +- :test: test_factorial_4 + :line: 13 + :message: '' + :unity_test_time: 0 +:failures: [] +:ignores: [] +:counts: + :total: 1 + :passed: 1 + :failed: 0 + :ignored: 0 +:stdout: [] +:time: 0.0060175769904162735 diff --git a/build/test/results/test_pow.pass b/build/test/results/test_pow.pass new file mode 100644 index 0000000..d103a0d --- /dev/null +++ b/build/test/results/test_pow.pass @@ -0,0 +1,22 @@ +--- +:source: + :path: test/Calculator + :file: test_pow.c +:successes: +- :test: test_pow_N_N + :line: 13 + :message: '' + :unity_test_time: 0 +- :test: test_pow_Z_N + :line: 26 + :message: '' + :unity_test_time: 0 +:failures: [] +:ignores: [] +:counts: + :total: 2 + :passed: 2 + :failed: 0 + :ignored: 0 +:stdout: [] +:time: 0.0062921050121076405 diff --git a/build/test/results/test_template.pass b/build/test/results/test_template.pass index 493caaa..28bc252 100644 --- a/build/test/results/test_template.pass +++ b/build/test/results/test_template.pass @@ -19,4 +19,4 @@ :failed: 0 :ignored: 0 :stdout: [] -:time: 0.004427945998031646 +:time: 0.002953332004835829 diff --git a/build/test/runners/test_factorial_runner.c b/build/test/runners/test_factorial_runner.c new file mode 100644 index 0000000..3e02547 --- /dev/null +++ b/build/test/runners/test_factorial_runner.c @@ -0,0 +1,81 @@ +/* AUTOGENERATED FILE. DO NOT EDIT. */ + +/*=======Automagically Detected Files To Include=====*/ +#include "unity.h" + +int GlobalExpectCount; +int GlobalVerifyOrder; +char* GlobalOrderError; + +/*=======External Functions This Runner Calls=====*/ +extern void setUp(void); +extern void tearDown(void); +extern void test_factorial_4(void); + + +/*=======Mock Management=====*/ +static void CMock_Init(void) +{ + GlobalExpectCount = 0; + GlobalVerifyOrder = 0; + GlobalOrderError = NULL; +} +static void CMock_Verify(void) +{ +} +static void CMock_Destroy(void) +{ +} + +/*=======Test Reset Options=====*/ +void resetTest(void); +void resetTest(void) +{ + tearDown(); + CMock_Verify(); + CMock_Destroy(); + CMock_Init(); + setUp(); +} +void verifyTest(void); +void verifyTest(void) +{ + CMock_Verify(); +} + +/*=======Test Runner Used To Run Each Test=====*/ +static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE line_num) +{ + Unity.CurrentTestName = name; + Unity.CurrentTestLineNumber = line_num; +#ifdef UNITY_USE_COMMAND_LINE_ARGS + if (!UnityTestMatches()) + return; +#endif + Unity.NumberOfTests++; + UNITY_CLR_DETAILS(); + UNITY_EXEC_TIME_START(); + CMock_Init(); + if (TEST_PROTECT()) + { + setUp(); + func(); + } + if (TEST_PROTECT()) + { + tearDown(); + CMock_Verify(); + } + CMock_Destroy(); + UNITY_EXEC_TIME_STOP(); + UnityConcludeTest(); +} + +/*=======MAIN=====*/ +int main(void) +{ + UnityBegin("test_factorial.c"); + run_test(test_factorial_4, "test_factorial_4", 13); + + return UnityEnd(); +} diff --git a/build/test/runners/test_pow_runner.c b/build/test/runners/test_pow_runner.c new file mode 100644 index 0000000..83a9119 --- /dev/null +++ b/build/test/runners/test_pow_runner.c @@ -0,0 +1,83 @@ +/* AUTOGENERATED FILE. DO NOT EDIT. */ + +/*=======Automagically Detected Files To Include=====*/ +#include "unity.h" + +int GlobalExpectCount; +int GlobalVerifyOrder; +char* GlobalOrderError; + +/*=======External Functions This Runner Calls=====*/ +extern void setUp(void); +extern void tearDown(void); +extern void test_pow_N_N(void); +extern void test_pow_Z_N(void); + + +/*=======Mock Management=====*/ +static void CMock_Init(void) +{ + GlobalExpectCount = 0; + GlobalVerifyOrder = 0; + GlobalOrderError = NULL; +} +static void CMock_Verify(void) +{ +} +static void CMock_Destroy(void) +{ +} + +/*=======Test Reset Options=====*/ +void resetTest(void); +void resetTest(void) +{ + tearDown(); + CMock_Verify(); + CMock_Destroy(); + CMock_Init(); + setUp(); +} +void verifyTest(void); +void verifyTest(void) +{ + CMock_Verify(); +} + +/*=======Test Runner Used To Run Each Test=====*/ +static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE line_num) +{ + Unity.CurrentTestName = name; + Unity.CurrentTestLineNumber = line_num; +#ifdef UNITY_USE_COMMAND_LINE_ARGS + if (!UnityTestMatches()) + return; +#endif + Unity.NumberOfTests++; + UNITY_CLR_DETAILS(); + UNITY_EXEC_TIME_START(); + CMock_Init(); + if (TEST_PROTECT()) + { + setUp(); + func(); + } + if (TEST_PROTECT()) + { + tearDown(); + CMock_Verify(); + } + CMock_Destroy(); + UNITY_EXEC_TIME_STOP(); + UnityConcludeTest(); +} + +/*=======MAIN=====*/ +int main(void) +{ + UnityBegin("test_pow.c"); + run_test(test_pow_N_N, "test_pow_N_N", 13); + run_test(test_pow_Z_N, "test_pow_Z_N", 26); + + return UnityEnd(); +} diff --git a/test/Calculator/test_factorial.c b/test/Calculator/test_factorial.c new file mode 100644 index 0000000..28814dc --- /dev/null +++ b/test/Calculator/test_factorial.c @@ -0,0 +1,25 @@ +#ifdef TEST +#include "unity.h" +#include "calculator.h" + + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} +void tearDown(void){ +} + + +void test_factorial_4(void){ + /* arrange */ + double result; + double a = 4; + + /* act */ + result = factorial(a); + + /* assert */ + TEST_ASSERT_EQUAL_INT(24, result);//1 * 2 * 3 * 4 = 24 +} + +#endif diff --git a/test/Calculator/test_add.c b/test/Calculator/test_pow.c similarity index 100% rename from test/Calculator/test_add.c rename to test/Calculator/test_pow.c