Compare commits

...

4 Commits

Author SHA1 Message Date
92bfa117af added template 2026-10-20 13:29:42 +03:00
280e806e82 removed build dir 2026-10-20 13:25:44 +03:00
ce2208e668 added laba 5 #2 2026-10-20 09:15:16 +03:00
db5b04ed8f added laba 5 2026-10-20 09:14:16 +03:00
17 changed files with 294 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
# Workspace Instructions
- Keep the project compatible with C11 and CMake 3.16 or newer.
- Put public headers in `include/`, implementations in `src/`, and tests in `tests/`.
- Keep reusable functionality in libraries and link executables to those libraries.
- Register tests with CTest and avoid adding dependencies unless the project needs them.
- Verify changes with `cmake -S . -B build`, `cmake --build build`, and `ctest --test-dir build --output-on-failure`.

2
c-template/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/build/
/cmake-build-*/

13
c-template/CMakeLists.txt Normal file
View File

@@ -0,0 +1,13 @@
cmake_minimum_required(VERSION 3.16)
project(c_template VERSION 1.0.0 LANGUAGES C)
include(CTest)
# add_library(greeting src/greeting.c)
# target_include_directories(greeting PUBLIC include)
# target_compile_features(greeting PUBLIC c_std_11)
add_executable(c_template src/main.c)
# target_link_libraries(c_template PRIVATE greeting)

31
c-template/README.md Normal file
View File

@@ -0,0 +1,31 @@
# Laba 6
Найти и удалить в заданной строке лишние пробелы между словами и
знаками препинания
## Requirements
- CMake 3.16 or newer
- A C compiler with C11 support
## Configure and build
```sh
cmake -S . -B build
cmake --build build
```
## Run
```sh
./build/c_template
```
## Test
```sh
ctest --test-dir build --output-on-failure
```
The `greeting` library is an example of how to separate reusable code into a
public header and implementation. Replace it with your project's own modules.

7
c-template/src/main.c Normal file
View File

@@ -0,0 +1,7 @@
#include <stdio.h>
int main(void){
printf("Hello world");
return(0);
}

View File

@@ -0,0 +1,10 @@
#include <assert.h>
#include <string.h>
#include "greeting.h"
int main(void)
{
assert(strcmp(greeting_message(), "Hello, world!") == 0);
return 0;
}

2
lab-5/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/build/
/cmake-build-*/

6
lab-5/.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"recommendations": [
"ms-vscode.cpptools",
"ms-vscode.cmake-tools"
]
}

24
lab-5/.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,24 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug CMake target",
"type": "cppdbg",
"request": "launch",
"program": "${command:cmake.launchTargetPath}",
"cwd": "${command:cmake.launchTargetDirectory}",
"console": "integratedTerminal",
"stopAtEntry": false,
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

5
lab-5/.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"cmake.useCMakePresets": "always",
"cmake.configureOnOpen": true,
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
}

23
lab-5/.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,23 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "CMake: build (Debug)",
"type": "cmake",
"command": "build",
"preset": "debug",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": "$gcc"
},
{
"label": "CMake: build (Release)",
"type": "cmake",
"command": "build",
"preset": "release",
"problemMatcher": "$gcc"
}
]
}

25
lab-5/CMakeLists.txt Normal file
View File

@@ -0,0 +1,25 @@
cmake_minimum_required(VERSION 3.15)
project(5laba_task6 VERSION 1.0.0 LANGUAGES C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_FLAGS_DEBUG "-g3 -O0 -Wall -Wextra -pedantic")
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
add_executable(${PROJECT_NAME}
src/main.c
)
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_SOURCE_DIR}/include
)
# # Опционально: установка
# install(TARGETS ${PROJECT_NAME}
# RUNTIME DESTINATION bin
# )

33
lab-5/CMakePresets.json Normal file
View File

@@ -0,0 +1,33 @@
{
"version": 3,
"configurePresets": [
{
"name": "debug",
"displayName": "Debug",
"generator": "Unix Makefiles",
"binaryDir": "${sourceDir}/build/debug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "release",
"displayName": "Release",
"generator": "Unix Makefiles",
"binaryDir": "${sourceDir}/build/release",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
}
],
"buildPresets": [
{
"name": "debug",
"configurePreset": "debug"
},
{
"name": "release",
"configurePreset": "release"
}
]
}

32
lab-5/README.md Normal file
View File

@@ -0,0 +1,32 @@
# Laba 5
Дано число n. Среди чисел 1, 2, …, n найти все те, которые можно
представить в виде суммы квадратов двух натуральных чисел. Для этого
определите функцию, позволяющую распознавать полные квадраты.
## Requirements
- CMake 3.16 or newer
- A C compiler with C11 support
## Configure and build
```sh
cmake -S . -B build
cmake --build build
```
## Run
```sh
./build/c_template
```
## Test
```sh
ctest --test-dir build --output-on-failure
```
The `greeting` library is an example of how to separate reusable code into a
public header and implementation. Replace it with your project's own modules.

34
lab-5/build.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/bash
# Build script for my_project
set -e
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Default build type
BUILD_TYPE="${1:-Debug}"
echo -e "${YELLOW}Building my_project (${BUILD_TYPE})...${NC}"
# Create build directory if it doesn't exist
if [ ! -d "build" ]; then
echo -e "${YELLOW}Creating build directory...${NC}"
mkdir -p build
fi
cd build
# Configure
echo -e "${YELLOW}Configuring CMake...${NC}"
cmake -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" ..
# Build
echo -e "${YELLOW}Compiling...${NC}"
make
echo -e "${GREEN}✓ Build completed successfully!${NC}"

7
lab-5/include/config.h Normal file
View File

@@ -0,0 +1,7 @@
#ifndef CONFIG_H
#define CONFIG_H
#define PROJECT_NAME "my_project"
#define VERSION "1.0.0"
#endif /* CONFIG_H */

33
lab-5/src/main.c Normal file
View File

@@ -0,0 +1,33 @@
#include <stdio.h>
int issqr(int x) {
if (x < 0) {
return 0;
}
for (int i = 0; i * i <= x; i++) {
if (i * i == x) {
return 1;
}
}
return 0;
}
int main() {
int n;
printf("Enter N: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++){
for (int a = 1; a*a < i; a++){
if (issqr(i-a*a)) {
printf("%d ", i);
break;
}
}
}
}