Initial commit

This commit is contained in:
2026-02-25 18:10:23 +03:00
commit de343e911e
11 changed files with 421 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
/CMakeCache*
/build
.vscode
.DS_Store

30
CMakeLists.txt Normal file
View File

@@ -0,0 +1,30 @@
cmake_minimum_required(VERSION 3.20)
# === Название проекта ===
project(gorshkov_lab_1_6 VERSION 1.0 LANGUAGES CXX)
# === Настройки компиляции ===
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# === Пути к исходникам и заголовкам ===
set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
# === Рекурсивный поиск исходников ===
file(GLOB_RECURSE SOURCES "${SRC_DIR}/*.cpp")
# === Создание исполняемого файла ===
add_executable(${PROJECT_NAME} ${SOURCES})
# === Добавляем include-директорию ===
target_include_directories(${PROJECT_NAME} PRIVATE ${INCLUDE_DIR})
# === Рекомендованные предупреждения ===
if (MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE /W4 /permissive-)
else()
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic)
endif()

19
include/labs.h Normal file
View File

@@ -0,0 +1,19 @@
#pragma once
#include <iostream>
using namespace std;
#define loop while (1)
using LabF = function<void()>;
void lab1();
void lab2();
void lab3();
void lab4();
void lab5();
void lab6();
double lab12_f1(double x);
double lab12_f2(double v, double w);

20
src/funcs.cpp Normal file
View File

@@ -0,0 +1,20 @@
#include <labs.h>
double lab12_f1(double x)
{
if (x < 2.5)
return sqrt(abs(sin(x)) + 15.0) / 4.0;
return sqrt(abs(sin(x)) + 15.0) / 2.0;
}
double lab12_f2(double v, double w)
{
if (w < 2)
return v - w * w;
if (w < 3)
return v * v - w;
return v;
}

21
src/lab1.cpp Normal file
View File

@@ -0,0 +1,21 @@
#include <labs.h>
void lab1()
{
double x, y, z, v, w;
cout << "Enter x: ";
cin >> x;
y = lab12_f1(x);
cout << "Result y(" << x << ") = " << y << endl
<< endl;
v = x;
cout << "V = " << v << endl;
cout << "Enter W: ";
cin >> w;
z = lab12_f2(v, w);
cout << "Result Z(" << v << ", " << w << ") = " << z << endl;
}

29
src/lab2.cpp Normal file
View File

@@ -0,0 +1,29 @@
#include <labs.h>
void lab2()
{
double v, w, z, w_min, w_max;
int c;
cout << "Enter V: ";
cin >> v;
cout << "Enter W min: ";
cin >> w_min;
cout << "Enter W max: ";
cin >> w_max;
cout << "Enter count of points: ";
cin >> c;
for (int i = 0; i < c; i++)
{
cout << endl;
w = w_min + (w_max - w_min) * ((double)i / (c - 1));
cout << i + 1 << ". W = " << w << endl;
z = lab12_f2(v, w);
cout << "Result Z(" << v << ", " << w << ") = " << z << endl;
}
}

106
src/lab3.cpp Normal file
View File

@@ -0,0 +1,106 @@
#include <labs.h>
using IterationF = function<double(int i)>;
using LoopF = function<double(int min, int max, IterationF &f)>;
double iteration(double x, double i);
double mp_for(int min, int max, IterationF &f);
double mp_while(int min, int max, IterationF &f);
double mp_do_while(int min, int max, IterationF &f);
void lab3()
{
LoopF loopF;
IterationF f;
double x, y;
int n;
char c;
cout << "Enter x: ";
cin >> x;
f = [=](int i)
{ return iteration(x, i); };
cout
<< "Enter N: ";
cin >> n;
loop // while (1)
{
cout << endl
<< "Select mode (F/W/D): ";
cin >> c;
switch (c)
{
case 'f':
case 'F':
loopF = mp_for;
break;
case 'w':
case 'W':
loopF = mp_while;
break;
case 'd':
case 'D':
loopF = mp_do_while;
break;
default:
cout << "Invalid mode, exiting!" << endl;
return;
}
y = pow(loopF(1, n, f), 1.2 * x);
cout << "Result y(" << x << ") = " << y << endl;
}
}
double iteration(double x, double i)
{
return 2.8 * pow(x, 4.5) + cbrt(i);
}
double mp_for(int min, int max, IterationF &f)
{
double res = 1.0;
for (int i = min; i <= max; i++)
{
res += f(i);
}
return res;
}
double mp_while(int min, int max, IterationF &f)
{
double res = 1.0;
int i = min;
while (i <= max)
{
res += f(i);
i++;
}
return res;
}
double mp_do_while(int min, int max, IterationF &f)
{
double res = 1.0;
if (min >= max)
return res;
int i = min;
do
{
res += f(i);
i++;
} while (i <= max);
return res;
}

50
src/lab4.cpp Normal file
View File

@@ -0,0 +1,50 @@
#include <labs.h>
constexpr size_t LEN = 15;
void lab4()
{
int arr[LEN], d_min, d_max, sum;
size_t len;
cout << "Enter range min: ";
cin >> d_min;
cout << "Enter range max: ";
cin >> d_max;
cout << "Enter size of array (0-" << LEN << "): ";
cin >> len;
if (len > LEN)
{
cout << "Invalid size, exiting!" << endl;
return;
}
for (size_t i = 0; i < len; i++)
{
cout << "Enter arr[" << i << "]: ";
cin >> arr[i];
}
sum = 0;
for (size_t i = 0; i < len; i++)
{
if (d_min <= arr[i] && arr[i] <= d_max)
sum += arr[i];
}
cout << "Arr is { ";
for (size_t i = 0; i < len; i++)
{
cout << arr[i];
if (i < len - 1)
cout << ", ";
else
cout << " ";
}
cout << "}" << endl;
cout << "Sum of elements in range [" << d_min << "; " << d_max << "] is " << sum << endl;
}

56
src/lab5.cpp Normal file
View File

@@ -0,0 +1,56 @@
#include <labs.h>
constexpr size_t LEN = 5;
void lab5()
{
int arr[LEN][LEN], d_min, d_max, d_count, v_max_i, v_max_j;
cout << "Enter range min: ";
cin >> d_min;
cout << "Enter range max: ";
cin >> d_max;
for (size_t i = 0; i < LEN; i++)
for (size_t j = 0; j < LEN; j++)
{
cout << "Enter arr[" << i << "][" << j << "]: ";
cin >> arr[i][j];
}
v_max_i = v_max_j = 0;
d_count = 0;
for (size_t i = 0; i < LEN; i++)
for (size_t j = 0; j < LEN; j++)
{
if (d_min <= arr[i][j] && arr[i][j] <= d_max)
d_count++;
if (arr[i][j] > arr[v_max_i][v_max_j])
{
v_max_i = i;
v_max_j = j;
}
}
cout << "Matrix is {" << endl;
for (size_t i = 0; i < LEN; i++)
{
for (size_t j = 0; j < LEN; j++)
{
cout << '\t' << arr[i][j];
if (j < LEN - 1)
cout << ",";
}
cout << endl;
}
cout << "}" << endl;
cout << "Number of elements in range [" << d_min << "; " << d_max << "] is " << d_count << endl;
cout << "Highest element in array is arr[" << v_max_i << "][" << v_max_j << "] = " << arr[v_max_i][v_max_j] << endl;
}

62
src/lab6.cpp Normal file
View File

@@ -0,0 +1,62 @@
#include <labs.h>
template <size_t LEN>
void make_array();
void print_array(double array[], size_t len);
void lab6()
{
make_array<3>();
make_array<4>();
make_array<5>();
}
template <size_t LEN>
void make_array()
{
cout << "Making an array with size: " << LEN << endl;
double arr[LEN], v_min, v_max, d;
for (size_t i = 0; i < LEN; i++)
{
cout << "Enter arr[" << i << "]: ";
cin >> arr[i];
}
print_array(arr, LEN);
for (size_t i = 0; i < LEN; i++)
{
arr[i] /= 2.0;
}
v_min = v_max = arr[0];
for (size_t i = 0; i < LEN; i++)
{
if (arr[i] < v_min)
v_min = arr[i];
if (arr[i] > v_max)
v_max = arr[i];
}
print_array(arr, LEN);
d = v_max - v_min;
cout << "Result: D = " << d << endl
<< endl;
}
void print_array(double arr[], size_t len)
{
cout << "Arr is { ";
for (size_t i = 0; i < len; i++)
{
cout << arr[i];
if (i < len - 1)
cout << ", ";
else
cout << " ";
}
cout << "}" << endl;
}

24
src/main.cpp Normal file
View File

@@ -0,0 +1,24 @@
#include <labs.h>
double lab12_f1(double x);
constexpr size_t LEN = 6;
static LabF LABS[LEN] = {lab1, lab2, lab3, lab4, lab5, lab6};
int main()
{
size_t choice;
cout << "Choose lab (1-6): ";
cin >> choice;
cout << endl;
if (choice < 1 || choice > LEN)
{
cout << "Lab " << choice << " not exists, exiting!" << endl;
return 1;
}
LABS[choice - 1]();
return 0;
}