Skip to content
This repository was archived by the owner on Jun 10, 2026. It is now read-only.
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
Empty file modified .github/workflows/release.yml
100755 → 100644
Empty file.
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.vs/
out/
build/
cmake-build-*/
*.ipch
*.db
*.log
.DS_Store
*.suo
*.user
22 changes: 18 additions & 4 deletions CMakeLists.txt
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,13 +1,27 @@
cmake_minimum_required (VERSION 3.10.2)
project (ST-2)
cmake_minimum_required(VERSION 3.10.2)
project(ST-2)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -g")


set(tool_dest "bin")
set(lib_dest "lib")
set(include_dest "include/")

# Îòêëþ÷àåì pthread íà Windows
if(WIN32)
set(gtest_disable_pthreads ON)
add_definitions(-DGTEST_HAS_PTHREAD=0)
endif()

# Ïîäêëþ÷àåì Google Test
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.14.0
)
FetchContent_MakeAvailable(googletest)

add_subdirectory(src)
add_subdirectory(test)
add_subdirectory(test)
22 changes: 19 additions & 3 deletions include/circle.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
// Copyright 2022 UNN-CS
// Copyright 2025 UNN-CS
#ifndef INCLUDE_CIRCLE_H_
#define INCLUDE_CIRCLE_H_
#include <cstdint>

class Circle {
private:
double radius_;
double ference_;
double area_;

#endif // INCLUDE_CIRCLE_H_
public:
explicit Circle(double radius);

double getRadius() const;
double getFerence() const;
double getArea() const;

void setRadius(double radius);
void setFerence(double ference);
void setArea(double area);
};

#endif // INCLUDE_CIRCLE_H_
9 changes: 9 additions & 0 deletions include/tasks.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// include/tasks.h
#ifndef INCLUDE_TASKS_H_
#define INCLUDE_TASKS_H_

double earthRopeGap();
double poolConcreteCost();
double poolFenceCost();

#endif // INCLUDE_TASKS_H_
31 changes: 17 additions & 14 deletions src/CMakeLists.txt
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
set(header_path "${${PROJECT_NAME}_SOURCE_DIR}/include")
set(header ${header_path}/circle.h)
set(src circle.cpp)
set(header
${header_path}/circle.h
${header_path}/tasks.h) # tasks.h äîáàâëåí
set(src
circle.cpp
tasks.cpp) # tasks.cpp äîáàâëåí

add_library(${PROJECT_NAME} SHARED
${header}
${src})
${header}
${src})

target_include_directories(${PROJECT_NAME}
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
${${PROJECT_NAME}_SOURCE_DIR}/include)
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
${${PROJECT_NAME}_SOURCE_DIR}/include)
target_link_libraries(${PROJECT_NAME}
pthread)
pthread)

add_executable(${PROJECT_NAME}.info main.cpp)
target_include_directories(${PROJECT_NAME}.info
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
${${PROJECT_NAME}_SOURCE_DIR}/include)
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
${${PROJECT_NAME}_SOURCE_DIR}/include)
target_link_libraries(${PROJECT_NAME}.info
${PROJECT_NAME})

${PROJECT_NAME})

install(TARGETS ${PROJECT_NAME}
LIBRARY DESTINATION "${lib_dest}"
LIBRARY DESTINATION "${lib_dest}"
ARCHIVE DESTINATION "${lib_dest}"
COMPONENT library)
install(TARGETS ${PROJECT_NAME}.info
RUNTIME DESTINATION "${tool_dest}"
RUNTIME DESTINATION "${tool_dest}"
COMPONENT library)
install(FILES ${header} DESTINATION "${include_dest}")
install(FILES ${header} DESTINATION "${include_dest}")
41 changes: 39 additions & 2 deletions src/circle.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,41 @@
// Copyright 2022 UNN-CS
#include <cstdint>
// Copyright 2025 UNN-CS
#include "circle.h"
#include <cmath>

#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif

Circle::Circle(double radius) {
setRadius(radius);
}

double Circle::getRadius() const {
return radius_;
}

double Circle::getFerence() const {
return ference_;
}

double Circle::getArea() const {
return area_;
}

void Circle::setRadius(double radius) {
radius_ = radius;
ference_ = 2.0 * M_PI * radius_;
area_ = M_PI * radius_ * radius_;
}

void Circle::setFerence(double ference) {
ference_ = ference;
radius_ = ference_ / (2.0 * M_PI);
area_ = M_PI * radius_ * radius_;
}

void Circle::setArea(double area) {
area_ = area;
radius_ = std::sqrt(area_ / M_PI);
ference_ = 2.0 * M_PI * radius_;
}
32 changes: 32 additions & 0 deletions src/tasks.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// src/tasks.cpp
#include "tasks.h"
#include "circle.h"
#include <cmath>

double earthRopeGap() {
const double earthRadius = 6378100.0; // 6378.1 êì â ìåòðàõ
Circle earth(earthRadius);
double oldFerence = earth.getFerence();
earth.setFerence(oldFerence + 1.0);
return earth.getRadius() - earthRadius;
}

double poolConcreteCost() {
const double poolRadius = 3.0;
const double pathWidth = 1.0;
const double concretePrice = 1000.0;

Circle pool(poolRadius);
Circle outer(poolRadius + pathWidth);
double pathArea = outer.getArea() - pool.getArea();
return pathArea * concretePrice;
}

double poolFenceCost() {
const double poolRadius = 3.0;
const double pathWidth = 1.0;
const double fencePrice = 2000.0;

Circle outer(poolRadius + pathWidth);
return outer.getFerence() * fencePrice;
}
Empty file modified test/AllTests.cpp
100755 → 100644
Empty file.
14 changes: 9 additions & 5 deletions test/CMakeLists.txt
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
add_executable(${PROJECT_NAME}.test
AllTests.cpp
tests.cpp)
tests.cpp)

target_link_libraries(${PROJECT_NAME}.test
${PROJECT_NAME} gtest pthread)
${PROJECT_NAME}
gtest_main)

target_compile_definitions(${PROJECT_NAME}.test
PRIVATE TEST_DIR="${CMAKE_CURRENT_LIST_DIR}/test")
PRIVATE TEST_DIR="${CMAKE_CURRENT_LIST_DIR}")

add_test(NAME ${PROJECT_NAME}_tests COMMAND ${PROJECT_NAME}.test)

install(TARGETS ${PROJECT_NAME}.test
DESTINATION "${tool_dest}")
RUNTIME DESTINATION "${tool_dest}")
Loading
Loading