Skip to content

Commit b3dec28

Browse files
author
Gonzalo Diaz
committed
[Hacker Rank]: Warmup: Plus Minus. Solved ✅.
1 parent 8f1ec3d commit b3dec28

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

src/lib/exercises/include/exercises/hackerrank/warmup/plus_minus.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
extern "C" {
55
#endif
66

7-
char **HACKERRANK_WARMUP_plusMinusCalculate(int arr_count, int *arr);
8-
void HACKERRANK_WARMUP_plusMinus(int arr_count, int *arr);
7+
char **HACKERRANK_WARMUP_plusMinusCalculate(int arr_count, const int *arr);
8+
void HACKERRANK_WARMUP_plusMinus(int arr_count, const int *arr);
99

1010
#ifdef __cplusplus
1111
} // extern "C"

src/lib/exercises/src/hackerrank/warmup/plus_minus.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ char *format_result(double number) {
1616
return buffer;
1717
}
1818

19-
char **HACKERRANK_WARMUP_plusMinusCalculate(int arr_count, int *arr) {
19+
char **HACKERRANK_WARMUP_plusMinusCalculate(int arr_count, const int *arr) {
2020
int positives = 0;
2121
int negatives = 0;
2222
int zeros = 0;
@@ -54,11 +54,13 @@ char **HACKERRANK_WARMUP_plusMinusCalculate(int arr_count, int *arr) {
5454
return answer;
5555
}
5656

57-
void HACKERRANK_WARMUP_plusMinus(int arr_count, int *arr) {
57+
void HACKERRANK_WARMUP_plusMinus(int arr_count, const int *arr) {
5858
char **output = HACKERRANK_WARMUP_plusMinusCalculate(arr_count, arr);
5959

60-
for (int i = 0; i < arr_count; i++) {
60+
int LIMIT = 3;
61+
for (int i = 0; i < LIMIT; i++) {
6162
printf("%s", output[i]);
63+
free(output[i]);
6264
}
6365

6466
free(output);

src/tests/unit/lib/hackerrank/warmup/plus_minus.test.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,23 @@ TEST_CASE("plusMinus JSON Test Cases", "[hackerrank] [jsontestcase] [warmup]") {
2323
for (auto testcase : data) {
2424
auto input_size = static_cast<int>(testcase["input"].size());
2525
std::vector<int> input_vector = testcase["input"];
26-
int *input_array = input_vector.data();
27-
28-
HACKERRANK_WARMUP_plusMinus(input_size, input_array);
26+
const int *input_array = input_vector.data();
2927

3028
char **result =
3129
HACKERRANK_WARMUP_plusMinusCalculate(input_size, input_array);
3230

33-
std::vector<std::string> result_as_vector(result, result + input_size);
31+
std::vector<std::string> result_as_vector;
32+
33+
int LIMIT = 3;
34+
for (int i = 0; i < LIMIT; i++) {
35+
result_as_vector.emplace_back(result[i]);
36+
free(result[i]);
37+
}
38+
free(result);
3439

3540
CHECK(result_as_vector == testcase["expected"]);
41+
42+
// Just call void function, to collect coverage
43+
HACKERRANK_WARMUP_plusMinus(input_size, input_array);
3644
}
3745
}

0 commit comments

Comments
 (0)