Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion task_01/src/main.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#include <iostream>



int main() { return 0; }
26 changes: 26 additions & 0 deletions task_01/src/mediana.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include "mediana.hpp"

int _max(int first_number, int second_number)
{
return first_number >= second_number ? first_number : second_number;
}

int _min(int first_number, int second_number)
{
return first_number <= second_number ? first_number : second_number;
}



int mediana(int first_number, int second_number, int third_number)
{
int maxx = _max(first_number, second_number);
maxx = _max(maxx, third_number);

int minn = _min(first_number, second_number);
minn = _min(minn, third_number);

int summ = first_number + second_number + third_number;

return summ - (maxx + minn);
}
6 changes: 6 additions & 0 deletions task_01/src/mediana.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
int _max(int first_number, int second_number);

int _min(int first_number, int second_number);

int mediana(int first_number, int second_number, int third_number);

1 change: 0 additions & 1 deletion task_01/src/sum.hpp

This file was deleted.

9 changes: 7 additions & 2 deletions task_01/src/test.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#include <gtest/gtest.h>

#include <sum.hpp>
#include "mediana.hpp"

TEST(Test, Simple) { ASSERT_EQ(Sum(1, 2, 3), 6); }
TEST(Mediana, Simple1) { ASSERT_EQ(mediana(1, 2, 3), 2); }
TEST(Mediana, Simple2) { ASSERT_EQ(mediana(1, 1, 1), 1); }
TEST(Mediana, Simple3) { ASSERT_EQ(mediana(-10, 0, 10), 0); }
TEST(Mediana, Simple4) { ASSERT_EQ(mediana(-3, -2, -1), -2); }
TEST(Mediana, Simple5) { ASSERT_EQ(mediana(2, 2, 3), 2); }
TEST(Mediana, Simple6) { ASSERT_EQ(mediana(1, 3, 3), 3); }
14 changes: 14 additions & 0 deletions task_02/src/max_arr.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#include "max_arr.hpp"

int max_arr(int* pa, int length)
{
int maxx = *pa;

for (int i = 0; i < length; ++i)
{
if (*pa >= maxx) maxx = *pa;
pa += 1;
}

return maxx;
}
1 change: 1 addition & 0 deletions task_02/src/max_arr.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
int max_arr(int* pa, int length);
28 changes: 25 additions & 3 deletions task_02/src/test.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
#include <gtest/gtest.h>
#include "max_arr.hpp"

TEST(Test, Simple) {
ASSERT_EQ(1, 1); // Stack []
}
int arr1[4] {1,2, 3, 4};
int* pa1 = &arr1[0];

int arr2[10] {1, 3, 7, 1, 15, 2, 9, 10, 10, 3};
int* pa2 = &arr2[0];

int arr3[6] {-9, -6, -7, -15, -60, -25};
int* pa3 = &arr3[0];

int arr4[1] {12};
int* pa4 = &arr4[0];

int arr5[3] {-9999999, -9999999, 1};
int* pa5 = &arr5[0];

TEST(Max_Arr, Simple1) { ASSERT_EQ(max_arr(pa1, 4), 4); }

TEST(Max_Arr, Simple2) { ASSERT_EQ(max_arr(pa2, 10), 15); }

TEST(Max_Arr, Simple3) { ASSERT_EQ(max_arr(pa3, 5), -6); }

TEST(Max_Arr, Simple4) { ASSERT_EQ(max_arr(pa4, 1), 12); }

TEST(Max_Arr, Simple5) { ASSERT_EQ(max_arr(pa5, 3), 1); }
24 changes: 23 additions & 1 deletion task_03/src/main.cpp
Original file line number Diff line number Diff line change
@@ -1 +1,23 @@
int main() { return 0; }
#include <iostream>
#include "reverse.hpp"

// Тестирование функции _arrays_equality

int main()
{
int arr_1[4] {1, 2, 3, 4};
int arr_2[4] {1, 2, 3, 4};
int arr_error [4] {4, 2, 3, 4};

int arr4[5] {1, 4, 9, 16, 25};
int right_answer4[5] {25, 16, 9, 4, 1};
int* answer4 = return_re_array(arr4, 5);

std::cout << "True: " << true << std::endl;
std::cout << _arrays_equality(arr_1, arr_2, 4) << std::endl;
std::cout << _arrays_equality(answer4, right_answer4, 5) << std::endl;

std::cout << "False: " << false << std::endl;
std::cout << _arrays_equality(arr_1, arr_error, 4) << std::endl;

}
45 changes: 44 additions & 1 deletion task_03/src/reverse.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,46 @@
#include "reverse.hpp"

void Reverse(int *array, size_t len) {}

bool _arrays_equality(int* array1, int* array2, const size_t& len)
{
// Функция для проверки равенства массивов

int* pa1 = array1;
int* pa2 = array2;

size_t it{0};

while (it < len)
{

if (pa1[it] == pa2[it]) ++it;

else return false;
}

return true;
}

void Reverse(int* array, const size_t& len)
{
int* _array = new int[len];

for (size_t i{0}; i < len; ++i)
_array[i] = array[len - i - 1];

for (size_t i{0}; i < len; ++i)
array[i] = _array[i];

delete[] _array;

}

int* return_re_array(int* array, const size_t& len)
{
// Дополнительную функцию для того, чтобы написать тесты
// для функции Reverse, которая возвращает void

Reverse(array, len);

return array;
}
7 changes: 6 additions & 1 deletion task_03/src/reverse.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,9 @@

#include <cstddef>

void Reverse(int *array, size_t len);
bool _arrays_equality(int* array1, int* array2, const size_t& len);

void Reverse(int* array, const size_t& len);

int* return_re_array(int* array, const size_t& len);

35 changes: 34 additions & 1 deletion task_03/src/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,37 @@

#include "reverse.hpp"

TEST(Reverse, Simple) {}

int arr1[4] {1,2, 3, 4};
int right_answer1[4] {4, 3, 2, 1};
int* answer1 = return_re_array(arr1, 4);

TEST(Revese, Simple1) { ASSERT_EQ(_arrays_equality(answer1, right_answer1, 4), true); }


int arr2[5] {5, 5, 5, 5, 5};
int right_answer2[5] {5, 5, 5, 5, 5};
int* answer2 = return_re_array(arr2, 5);

TEST(Revese, Simple2) { ASSERT_EQ(_arrays_equality(answer2, right_answer2, 5), true); }

int arr3[6] {0, 1, 0, 1, 0, 1};
int right_answer3[6] {1, 0, 1, 0, 1, 0};
int* answer3 = return_re_array(arr3, 6);

TEST(Revese, Simple3) { ASSERT_EQ(_arrays_equality(answer3, right_answer3, 6), true); }

int arr4[5] {1, 4, 9, 16, 25};
int bad_answer1[5] {25, 16, 9, 4, 10000};
int* answer4 = return_re_array(arr4, 5);

TEST(Revese, SimpleError1) { ASSERT_EQ(_arrays_equality(answer4, bad_answer1, 5), false); }

int arr5[5] {1, 4, 9, 16, 25};
int bad_answer5[5] {1, 4, 9, 16, 25};
int* answer5 = return_re_array(arr5, 5);

TEST(Revese, SimpleError2) { ASSERT_EQ(_arrays_equality(answer4, bad_answer1, 5), false); }


// TEST(Revese, WHAT) { ASSERT_EQ(answer3, right_answer3); } У одинаковых массивов разные адреса
20 changes: 19 additions & 1 deletion task_04/src/main.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
#include <iostream>
#include "shift_right.hpp"

int main() { return 0; }

int main()
{
int arr1[5] {1,2, 3, 4, 5};
int right_answer1[5] {4, 1, 2, 3};
int* answer1 = return_sh_array(arr1, 5, 1);

std::cout << "Array: {";

for (size_t i = 0; i < 5; i++)
{

std::cout << answer1[i] << ", ";
}

std::cout << "}";

}
52 changes: 52 additions & 0 deletions task_04/src/shift.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#include "shift_right.hpp"

bool _arrays_equality(int* array1, int* array2, const size_t& len)
{
// Функция для проверки равенства массивов

int* pa1 = array1;
int* pa2 = array2;

size_t it{0};

while (it < len)
{

if (pa1[it] == pa2[it]) ++it;

else return false;
}

return true;
}

void Shift_right(int* array, const size_t& len, const unsigned int& N)
{
int* _array = new int[len];

size_t max_it = len - 1;

for (size_t it{0}; it < len; ++it)
{
if (it < N)
_array[it] = array[len - N + it];
else
_array[it] = array[it - N];
}

for (size_t i{0}; i < len; ++i)
array[i] = _array[i];

delete[] _array;

}

int* return_sh_array(int* array, const size_t& len, const size_t& N)
{
// Дополнительную функцию для того, чтобы написать тесты
// для функции Shift_right, которая возвращает void

Shift_right(array, len, N);

return array;
}
13 changes: 13 additions & 0 deletions task_04/src/shift_right.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#pragma once

#include <cstddef>

bool _arrays_equality(int* array1, int* array2, const size_t& len);

void Shift_right(int* array, const size_t& len, const unsigned int& N);

int* return_sh_array(int* array, const size_t& len, const size_t& N);




37 changes: 33 additions & 4 deletions task_04/src/test.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,35 @@

#include <gtest/gtest.h>

TEST(TopologySort, Simple) {
ASSERT_EQ(1, 1); // Stack []
}
#include "shift_right.hpp"

int arr1[4] {1,2, 3, 4};
int right_answer1[4] {4, 1, 2, 3};
int* answer1 = return_sh_array(arr1, 4, 1);

TEST(Shift, Simple1) { ASSERT_EQ(_arrays_equality(answer1, right_answer1, 4), true); }


int arr2[4] {1,2, 3, 4};
int right_answer2[4] {3, 4, 1, 2};
int* answer2 = return_sh_array(arr2, 4, 2);

TEST(Shift, Simple2) { ASSERT_EQ(_arrays_equality(answer2, right_answer2, 4), true); }


int arr3[4] {1,2, 3, 4};
int right_answer3[4] {1, 2, 3, 4};
int* answer3 = return_sh_array(arr3, 4, 0);

TEST(Shift, Simple3) { ASSERT_EQ(_arrays_equality(answer3, right_answer3, 4), true); }

int arr4[5] {1, 2, 3, 4, 5};
int bad_answer4[5] {1, 2, 3, 4, 5};
int* answer4 = return_sh_array(arr4, 5, 2);

TEST(Shift, SimpleError1) { ASSERT_EQ(_arrays_equality(answer4, bad_answer4, 5), false); }

int arr5[5] {1, 2, 3, 4, 5};
int right_answer5[5] {1, 2, 3, 4, 5};
int* answer5 = return_sh_array(arr5, 5, 5);

TEST(Shift, Simple5) { ASSERT_EQ(_arrays_equality(answer5, right_answer5, 5), true); }