Skip to content

Commit e223a9d

Browse files
committed
attempt 2
1 parent 2ae1bf0 commit e223a9d

File tree

4 files changed

+49
-33
lines changed

4 files changed

+49
-33
lines changed

task_01/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
int main() {
66
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
77
int m = 5;
8-
std::tuple<bool, int*, int*> b = topology_sort(a, 9, m);
8+
std::tuple<bool, int*, int*> b = SummanddsInArray(a, 9, m);
99
if (std::get<0>(b)) {
1010
std::cout << "found" << std::endl;
1111
std::cout << std::get<1>(b) << " : " << *std::get<1>(b) << std::endl;

task_01/src/test.cpp

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,79 +3,95 @@
33

44
#include "topology_sort.hpp"
55

6-
TEST(TopologySort, Simple1) {
6+
TEST(SummanddsInArray, Simple1) {
77
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
88
int n = 9;
99
int m = 11;
10-
std::tuple<bool, int*, int*> a = topology_sort(arr, n, m);
10+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
1111
ASSERT_EQ(std::get<0>(a), true);
1212
ASSERT_EQ(*std::get<1>(a) + *std::get<2>(a), m);
1313
}
1414

15-
TEST(TopologySort, Simple2) {
15+
TEST(SummanddsInArray, Simple2) {
1616
int arr[] = {1, 2, 3, 4, 5, 8, 9};
1717
int n = 7;
1818
int m = 5;
19-
std::tuple<bool, int*, int*> a = topology_sort(arr, n, m);
19+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
2020
ASSERT_EQ(std::get<0>(a), true);
2121
ASSERT_EQ(*std::get<1>(a) + *std::get<2>(a), m);
2222
}
23-
TEST(TopologySort, Simple3) {
23+
TEST(SummanddsInArray, Simple3) {
2424
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2525
int n = 9;
2626
int m = 3;
27-
std::tuple<bool, int*, int*> a = topology_sort(arr, n, m);
27+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
2828
ASSERT_EQ(std::get<0>(a), true);
2929
ASSERT_EQ(*std::get<1>(a) + *std::get<2>(a), m);
3030
}
3131

32-
TEST(TopologySort, Simple4) {
32+
TEST(SummanddsInArray, Simple4) {
3333
int arr[] = {1, 3, 5, 7, 9};
3434
int n = 5;
3535
int m = 7;
36-
std::tuple<bool, int*, int*> a = topology_sort(arr, n, m);
36+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
3737
ASSERT_EQ(std::get<0>(a), false);
3838
}
3939

40-
TEST(TopologySort, Nullarr) {
40+
TEST(SummanddsInArray, Nullarr) {
4141
int* arr = nullptr;
4242
int n = 9;
4343
int m = 3;
44-
std::tuple<bool, int*, int*> a = topology_sort(arr, n, m);
44+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
4545
ASSERT_EQ(std::get<0>(a), false);
4646
}
4747

48-
TEST(TopologySort, Specific1) {
48+
TEST(SummanddsInArray, Specific1) {
4949
int arr_ref[] = {10, 2, 3, 4, 5, 5, 7, 8, 0};
5050
int* arr = arr_ref + 1;
51-
int n = 7;
51+
int n = 9;
5252
int m = 5;
53-
std::tuple<bool, int*, int*> a = topology_sort(arr, n, m);
53+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
5454
ASSERT_EQ(std::get<0>(a), true);
5555
ASSERT_EQ(*std::get<1>(a) + *std::get<2>(a), m);
5656
}
5757

58-
TEST(TopologySort, Specific2) {
58+
TEST(SummanddsInArray, Specific2) {
5959
int arr[] = {1, 2, 4, 5, 8};
60-
int n = 7;
60+
int n = 5;
6161
int m = 8;
62-
std::tuple<bool, int*, int*> a = topology_sort(arr, n, m);
62+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
6363
ASSERT_EQ(std::get<0>(a), false);
6464
}
6565

66-
TEST(TopologySort, Specific3) {
66+
TEST(SummanddsInArray, Specific3) {
6767
int arr[] = {1, 3, 4, 5, 8};
68-
int n = 7;
68+
int n = 5;
6969
int m = 16;
70-
std::tuple<bool, int*, int*> a = topology_sort(arr, n, m);
70+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
7171
ASSERT_EQ(std::get<0>(a), false);
7272
}
7373

74-
TEST(TopologySort, Specific4) {
74+
TEST(SummanddsInArray, Specific4) {
7575
int arr[] = {1, 3, 4, 5, 5, 8};
7676
int n = 6;
7777
int m = 10;
78-
std::tuple<bool, int*, int*> a = topology_sort(arr, n, m);
78+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
7979
ASSERT_EQ(std::get<0>(a), true);
8080
ASSERT_EQ(*std::get<1>(a) + *std::get<2>(a), m);
81+
}
82+
83+
TEST(SummanddsInArray, Specific5) {
84+
int arr[] = {};
85+
int n = 0;
86+
int m = 10;
87+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
88+
ASSERT_EQ(std::get<0>(a), false);
89+
}
90+
91+
TEST(SummanddsInArray, Specific6) {
92+
int arr[] = {10};
93+
int n = 1;
94+
int m = 20;
95+
std::tuple<bool, int*, int*> a = SummanddsInArray(arr, n, m);
96+
ASSERT_EQ(std::get<0>(a), false);
8197
}

task_01/src/topology_sort.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
#include "topology_sort.hpp"
22

3-
std::tuple<bool, int *, int *> topology_sort(int *arr, int n, int m) {
4-
int *b = arr, *e = arr + (n - 1);
5-
bool found = 1;
6-
while (b && e && b != e && *b + *e != m)
7-
if ((*b + *e) > m)
8-
e--;
3+
std::tuple<bool, int *, int *> SummanddsInArray(int *arr, int n, int sum) {
4+
int *begin = arr, *end = arr + (n - 1);
5+
bool found = true;
6+
while (begin && end && begin < end && *begin + *end != sum)
7+
if ((*begin + *end) > sum)
8+
end--;
99
else
10-
b++;
11-
if ((!b) || (!e) || (b == e) || (*b + *e != m)) {
12-
b = e = nullptr;
10+
begin++;
11+
if ((!begin) || (!end) || (begin >= end) || (*begin + *end != sum)) {
12+
begin = end = nullptr;
1313
found = 0;
1414
}
15-
return std::tuple<bool, int *, int *>{found, b, e};
15+
return std::tuple<bool, int *, int *>{found, begin, end};
1616
}

task_01/src/topology_sort.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33

44
#include <tuple>
55

6-
std::tuple<bool, int*, int*> topology_sort(int* arr, int n, int m);
6+
std::tuple<bool, int*, int*> SummanddsInArray(int* arr, int n, int m);
77

88
#endif

0 commit comments

Comments
 (0)