File tree 22 files changed +686
-8
lines changed
22 files changed +686
-8
lines changed Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ endif()
12
12
13
13
add_subdirectory (LibraryC)
14
14
add_subdirectory (LibraryCPP)
15
+ add_subdirectory (LibraryCPPClass)
15
16
add_subdirectory (LibraryCPPTemplate)
16
17
17
18
add_subdirectory (Lab1C)
Original file line number Diff line number Diff line change
1
+ add_library (LibraryCPPClass STATIC array.cpp list.cpp queue.cpp stack.cpp vector.cpp)
2
+
3
+ add_subdirectory (Tests)
Original file line number Diff line number Diff line change
1
+ add_executable (TestArrayCPPClass array.cpp)
2
+ target_include_directories (TestArrayCPPClass PUBLIC ..)
3
+ target_link_libraries (TestArrayCPPClass LibraryCPPClass)
4
+ add_test (TestArrayCPPClass TestArrayCPPClass)
5
+
6
+ add_executable (TestListCPPClass list.cpp)
7
+ target_include_directories (TestListCPPClass PUBLIC ..)
8
+ target_link_libraries (TestListCPPClass LibraryCPPClass)
9
+ add_test (TestListCPPClass TestListCPPClass)
10
+
11
+ add_executable (TestQueueCPPClass queue.cpp)
12
+ target_include_directories (TestQueueCPPClass PUBLIC ..)
13
+ target_link_libraries (TestQueueCPPClass LibraryCPPClass)
14
+ add_test (TestQueueCPPClass TestQueueCPPClass)
15
+
16
+ add_executable (TestStackCPPClass stack.cpp)
17
+ target_include_directories (TestStackCPPClass PUBLIC ..)
18
+ target_link_libraries (TestStackCPPClass LibraryCPPClass)
19
+ add_test (TestStackCPPClass TestStackCPPClass)
20
+
21
+ add_executable (TestVectorCPPClass vector.cpp)
22
+ target_include_directories (TestVectorCPPClass PUBLIC ..)
23
+ target_link_libraries (TestVectorCPPClass LibraryCPPClass)
24
+ add_test (TestVectorCPPClass TestVectorCPPClass)
25
+ set_tests_properties (TestVectorCPPClass PROPERTIES TIMEOUT 10)
Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include " array.h"
3
+
4
+ int main ()
5
+ {
6
+ Array *arr = new Array (10 );
7
+
8
+ if (arr->size () != 10 )
9
+ {
10
+ std::cout << " Invalid array size\n " ;
11
+ return 1 ;
12
+ }
13
+
14
+ for (int i = 0 ; i < 10 ; ++i)
15
+ arr->set (i, i * 2 );
16
+
17
+ for (int i = 0 ; i < 10 ; ++i)
18
+ {
19
+ if (arr->get (i) != i * 2 )
20
+ {
21
+ std::cout << " Invalid array element " << i << " \n " ;
22
+ return 1 ;
23
+ }
24
+ }
25
+
26
+ delete arr;
27
+ }
Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include " list.h"
3
+
4
+ int main ()
5
+ {
6
+ List *list = new List;
7
+
8
+ if (!list)
9
+ {
10
+ std::cout << " List creation error\n " ;
11
+ return 1 ;
12
+ }
13
+
14
+ list->insert (1 );
15
+ list->insert (2 );
16
+ list->insert (3 );
17
+
18
+ if (list->first ()->data () != 3 )
19
+ {
20
+ std::cout << " list_insert error\n " ;
21
+ return 1 ;
22
+ }
23
+
24
+ list->insert_after (list->first (), 4 );
25
+
26
+ if (list->first ()->next ()->data () != 4 )
27
+ {
28
+ std::cout << " list_insert_after error\n " ;
29
+ return 1 ;
30
+ }
31
+
32
+ list->erase_first ();
33
+
34
+ if (list->first ()->data () != 4 )
35
+ {
36
+ std::cout << " list_erase error\n " ;
37
+ return 1 ;
38
+ }
39
+
40
+ std::cout << " List: " ;
41
+ for (auto item = list->first () ; item ; item = item->next ())
42
+ {
43
+ std::cout << item->data () << " " ;
44
+ }
45
+ std::cout << " \n " ;
46
+
47
+ delete list;
48
+ }
Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include " queue.h"
3
+
4
+ int main ()
5
+ {
6
+ Queue *queue = new Queue ();
7
+
8
+ queue->insert (1 );
9
+ queue->insert (2 );
10
+ queue->insert (3 );
11
+
12
+ if (queue->get () != 1 )
13
+ {
14
+ std::cout << " Invalid first element of the queue\n " ;
15
+ return 1 ;
16
+ }
17
+
18
+ std::cout << " Get: " << queue->get () << " \n " ;
19
+ queue->remove ();
20
+
21
+ if (queue->get () != 2 )
22
+ {
23
+ std::cout << " Invalid second element of the queue\n " ;
24
+ return 1 ;
25
+ }
26
+
27
+ std::cout << " Get: " << queue->get () << " \n " ;
28
+ queue->remove ();
29
+
30
+ if (queue->get () != 3 )
31
+ {
32
+ std::cout << " Invalid third element of the queue\n " ;
33
+ return 1 ;
34
+ }
35
+
36
+ std::cout << " Get: " << queue->get () << " \n " ;
37
+ queue->insert (4 );
38
+ while (!queue->empty ())
39
+ {
40
+ std::cout << " Get: " << queue->get () << " \n " ;
41
+ queue->remove ();
42
+ }
43
+
44
+ delete queue;
45
+ }
Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include " stack.h"
3
+
4
+ int main ()
5
+ {
6
+ Stack stack;
7
+
8
+ stack.push (1 );
9
+ stack.push (2 );
10
+ stack.push (3 );
11
+
12
+ if (stack.get () != 3 )
13
+ {
14
+ std::cout << " Invalid stack top after push\n " ;
15
+ return 1 ;
16
+ }
17
+
18
+ std::cout << " Get: " << stack.get () << " \n " ;
19
+ stack.pop ();
20
+
21
+ if (stack.get () != 2 )
22
+ {
23
+ std::cout << " Invalid stack top after pop\n " ;
24
+ return 1 ;
25
+ }
26
+
27
+ std::cout << " Get: " << stack.get () << " \n " ;
28
+ stack.pop ();
29
+
30
+ if (stack.get () != 1 )
31
+ {
32
+ std::cout << " Invalid stack top after pop\n " ;
33
+ return 1 ;
34
+ }
35
+
36
+ std::cout << " Get: " << stack.get () << " \n " ;
37
+ stack.push (4 );
38
+ stack.push (5 );
39
+
40
+ if (stack.get () != 5 )
41
+ {
42
+ std::cout << " Invalid stack top after push\n " ;
43
+ return 1 ;
44
+ }
45
+
46
+ while (!stack.empty ())
47
+ {
48
+ std::cout << " Get: " << stack.get () << " \n " ;
49
+ stack.pop ();
50
+ }
51
+ }
Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include " vector.h"
3
+
4
+ int main ()
5
+ {
6
+ Vector vector;
7
+
8
+ vector.resize (5 );
9
+ if (vector.size () != 5 )
10
+ {
11
+ std::cout << " Invalid resize\n " ;
12
+ return 1 ;
13
+ }
14
+
15
+ for (size_t i = 0 ; i < vector.size () ; ++i)
16
+ vector.set (i, i);
17
+
18
+ for (size_t i = 0 ; i < vector.size () ; ++i)
19
+ {
20
+ if (vector.get (i) != (int )i)
21
+ {
22
+ std::cout << " Invalid vector element " << i << " \n " ;
23
+ return 1 ;
24
+ }
25
+ }
26
+
27
+ vector.resize (10 );
28
+ if (vector.size () != 10 )
29
+ {
30
+ std::cout << " Invalid resize\n " ;
31
+ return 1 ;
32
+ }
33
+
34
+ std::cout << " Vector: " ;
35
+ for (size_t i = 0 ; i < vector.size () ; ++i)
36
+ std::cout << vector.get (i) << " " ;
37
+ std::cout << " \n " ;
38
+
39
+ vector.resize (3 );
40
+ if (vector.size () != 3 )
41
+ {
42
+ std::cout << " Invalid resize\n " ;
43
+ return 1 ;
44
+ }
45
+
46
+ for (size_t i = 0 ; i < vector.size () ; ++i)
47
+ {
48
+ if (vector.get (i) != (int )i)
49
+ {
50
+ std::cout << " Invalid vector element " << i << " \n " ;
51
+ return 1 ;
52
+ }
53
+ }
54
+
55
+ std::cout << " Vector: " ;
56
+ for (size_t i = 0 ; i < vector.size () ; ++i)
57
+ std::cout << vector.get (i) << " " ;
58
+ std::cout << " \n " ;
59
+
60
+ // Performance test
61
+ for (int i = 1 ; i <= 10000000 ; ++i)
62
+ {
63
+ vector.resize (i);
64
+ vector.set (i - 1 , i);
65
+ }
66
+
67
+ long long sum = 0 ;
68
+ for (int i = 0 ; i < 10000000 ; ++i)
69
+ sum += vector.get (i);
70
+
71
+ std::cout << sum << " \n " ;
72
+ }
Original file line number Diff line number Diff line change
1
+ #include " array.h"
2
+
3
+ Array::Array (size_t size)
4
+ {
5
+ }
6
+
7
+ Array::Array (const Array &a)
8
+ {
9
+ // implement or disable this function
10
+ }
11
+
12
+ Array &Array::operator =(const Array &a)
13
+ {
14
+ // implement or disable this function
15
+ return *this ;
16
+ }
17
+
18
+ Array::~Array ()
19
+ {
20
+ }
21
+
22
+ Data Array::get (size_t index) const
23
+ {
24
+ return Data (0 );
25
+ }
26
+
27
+ void Array::set (size_t index, Data value)
28
+ {
29
+ }
30
+
31
+ size_t Array::size () const
32
+ {
33
+ return 0 ;
34
+ }
Original file line number Diff line number Diff line change
1
+ #ifndef ARRAY_H
2
+ #define ARRAY_H
3
+
4
+ #include < cstddef>
5
+
6
+ typedef int Data;
7
+
8
+ class Array
9
+ {
10
+ public:
11
+ // create array
12
+ explicit Array (size_t size);
13
+
14
+ // copy constructor
15
+ Array (const Array &a);
16
+
17
+ // assignment operator
18
+ Array &operator =(const Array &a);
19
+
20
+ // delete array, free memory
21
+ ~Array ();
22
+
23
+ // returns specified array element
24
+ Data get (size_t index) const ;
25
+
26
+ // sets the specified array element to the value
27
+ void set (size_t index, Data value);
28
+
29
+ // returns array size
30
+ size_t size () const ;
31
+
32
+ private:
33
+ // private data should be here
34
+ };
35
+
36
+ #endif
You can’t perform that action at this time.
0 commit comments