From 812abb34bf5893ef3631a752815572d9f891f86d Mon Sep 17 00:00:00 2001 From: yuran4ik Date: Fri, 22 Nov 2024 21:00:20 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D1=8C=D1=82?= =?UTF-8?q?=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 11/11.cpp | 341 ++++++++++++++++ 11/11.h | 3 + 11/11.ico | Bin 0 -> 46227 bytes 11/11.rc | Bin 0 -> 6866 bytes 11/11.vcxproj | 151 +++++++ 11/11.vcxproj.filters | 55 +++ 11/Function.cpp | 116 ++++++ 11/Function.h | 31 ++ 11/Resource.h | 30 ++ 11/desktop.ini | 2 + 11/framework.h | 15 + 11/small.ico | Bin 0 -> 46227 bytes 11/targetver.h | 6 + 13-14/13-14.vcxproj | 139 +++++++ 13-14/13-14.vcxproj.filters | 30 ++ 13-14/Function.c | 266 ++++++++++++ 13-14/Function.h | 14 + 13-14/Main.c | 12 + 13-14/desktop.ini | 2 + 15/15.vcxproj | 139 +++++++ 15/15.vcxproj.filters | 30 ++ 15/Main.c | 13 + 15/TwoDimentionalArray.c | 240 +++++++++++ 15/TwoDimentionalArray.h | 10 + 15/desktop.ini | 2 + 16/16.cpp | 514 ++++++++++++++++++++++++ 16/16.h | 3 + 16/16.ico | Bin 0 -> 46227 bytes 16/16.rc | Bin 0 -> 7502 bytes 16/16.vcxproj | 148 +++++++ 16/16.vcxproj.filters | 49 +++ 16/desktop.ini | 2 + 16/framework.h | 15 + 16/resource.h | 31 ++ 16/small.ico | Bin 0 -> 46227 bytes 16/targetver.h | 6 + 17/17.c | 112 ++++++ 17/17.vcxproj | 135 +++++++ 17/17.vcxproj.filters | 22 + 17/desktop.ini | 2 + 18/18.cpp | 448 +++++++++++++++++++++ 18/18.h | 3 + 18/18.ico | Bin 0 -> 46227 bytes 18/18.rc | Bin 0 -> 6842 bytes 18/18.vcxproj | 148 +++++++ 18/18.vcxproj.filters | 49 +++ 18/Resource.h | 30 ++ 18/desktop.ini | 2 + 18/framework.h | 15 + 18/small.ico | Bin 0 -> 46227 bytes 18/targetver.h | 6 + 19-20/19-20.vcxproj | 136 +++++++ 19-20/19-20.vcxproj.filters | 25 ++ 19-20/19.c | 204 ++++++++++ 19-20/20.c | 169 ++++++++ 19-20/desktop.ini | 2 + 21-22/21-22.vcxproj | 136 +++++++ 21-22/21-22.vcxproj.filters | 25 ++ 21-22/21.c | 110 +++++ 21-22/22.c | 99 +++++ 21-22/desktop.ini | 2 + 23-24/23-24.vcxproj | 136 +++++++ 23-24/23-24.vcxproj.filters | 25 ++ 23-24/23.c | 116 ++++++ 23-24/24.c | 110 +++++ 23-24/desktop.ini | 2 + 910/910.vcxproj | 140 +++++++ 910/910.vcxproj.filters | 30 ++ 910/desktop.ini | 2 + 910/func.c | 181 +++++++++ 910/func.h | 6 + 910/lab.c | 13 + Temp/19-20/desktop.ini | 2 + Temp/19-20/in1.txt | 2 + Temp/19-20/in2.txt | 2 + Temp/19-20/in3.txt | 2 + Temp/19-20/in4.txt | 2 + Temp/23-24/desktop.ini | 2 + Temp/23-24/in1.txt | 1 + Temp/23-24/in1html.txt | 17 + Temp/23-24/in2.txt | 1 + Temp/23-24/in2html.txt | 5 + Temp/23-24/in4.txt | 1 + Temp/23-24/out1.txt | 1 + Temp/23-24/out1html.html | 17 + Temp/23-24/out2.txt | 1 + Temp/23-24/out2html.html | 5 + Temp/23-24/out4.txt | 1 + Temp/desktop.ini | 2 + Temp/game.bin | Bin 0 -> 2416 bytes Temp/start.bin | Bin 0 -> 2416 bytes Temp/test.txt | 4 + additional_materials/L13-14/Z1.png | Bin 0 -> 11897 bytes additional_materials/L13-14/Z2.png | Bin 0 -> 13389 bytes additional_materials/L13-14/desktop.ini | 2 + additional_materials/L18/Z5.png | Bin 0 -> 30395 bytes additional_materials/L18/desktop.ini | 2 + additional_materials/L3/L3Z2.png | Bin 0 -> 18826 bytes additional_materials/L3/L3Z3.png | Bin 0 -> 21786 bytes additional_materials/L3/L3Z5.png | Bin 0 -> 34978 bytes additional_materials/L3/L3Z6.png | Bin 0 -> 29559 bytes additional_materials/L3/desktop.ini | 2 + additional_materials/L4/L4Z2.png | Bin 0 -> 10352 bytes additional_materials/L4/L4Z4.png | Bin 0 -> 9063 bytes additional_materials/L4/L4Z6.png | Bin 0 -> 30941 bytes additional_materials/L4/L4Z7.png | Bin 0 -> 17804 bytes additional_materials/L4/desktop.ini | 2 + additional_materials/L7/L7Z1.png | Bin 0 -> 19984 bytes additional_materials/L7/desktop.ini | 2 + additional_materials/L8/L8Z5.png | Bin 0 -> 17431 bytes additional_materials/L8/desktop.ini | 2 + additional_materials/L9/Z3.png | Bin 0 -> 13232 bytes additional_materials/L9/Z5.png | Bin 0 -> 14448 bytes additional_materials/L9/Zpif.png | Bin 0 -> 18323 bytes additional_materials/L9/desktop.ini | 2 + additional_materials/L9/tracing MN.png | Bin 0 -> 17830 bytes additional_materials/desktop.ini | 2 + desktop.ini | 2 + lab.sln | 141 +++++++ lab/desktop.ini | 2 + lab/lab.vcxproj | 138 +++++++ lab/lab.vcxproj.filters | 31 ++ lab/lab1.c | 57 +++ lab/lab2.c | 104 +++++ lab/lab3.c | 217 ++++++++++ lab/lab4.c | 130 ++++++ window/L8.cpp | 194 +++++++++ window/L8.h | 12 + window/Paint.cpp | 506 +++++++++++++++++++++++ window/Paint.h | 18 + window/desktop.ini | 2 + window/framework.h | 15 + window/resource.h | 34 ++ window/small.ico | Bin 0 -> 46227 bytes window/targetver.h | 6 + window/window.cpp | 316 +++++++++++++++ window/window.h | 3 + window/window.ico | Bin 0 -> 46227 bytes window/window.rc | Bin 0 -> 7480 bytes window/window.vcxproj | 152 +++++++ window/window.vcxproj.filters | 61 +++ 141 files changed, 7281 insertions(+) create mode 100644 11/11.cpp create mode 100644 11/11.h create mode 100644 11/11.ico create mode 100644 11/11.rc create mode 100644 11/11.vcxproj create mode 100644 11/11.vcxproj.filters create mode 100644 11/Function.cpp create mode 100644 11/Function.h create mode 100644 11/Resource.h create mode 100644 11/desktop.ini create mode 100644 11/framework.h create mode 100644 11/small.ico create mode 100644 11/targetver.h create mode 100644 13-14/13-14.vcxproj create mode 100644 13-14/13-14.vcxproj.filters create mode 100644 13-14/Function.c create mode 100644 13-14/Function.h create mode 100644 13-14/Main.c create mode 100644 13-14/desktop.ini create mode 100644 15/15.vcxproj create mode 100644 15/15.vcxproj.filters create mode 100644 15/Main.c create mode 100644 15/TwoDimentionalArray.c create mode 100644 15/TwoDimentionalArray.h create mode 100644 15/desktop.ini create mode 100644 16/16.cpp create mode 100644 16/16.h create mode 100644 16/16.ico create mode 100644 16/16.rc create mode 100644 16/16.vcxproj create mode 100644 16/16.vcxproj.filters create mode 100644 16/desktop.ini create mode 100644 16/framework.h create mode 100644 16/resource.h create mode 100644 16/small.ico create mode 100644 16/targetver.h create mode 100644 17/17.c create mode 100644 17/17.vcxproj create mode 100644 17/17.vcxproj.filters create mode 100644 17/desktop.ini create mode 100644 18/18.cpp create mode 100644 18/18.h create mode 100644 18/18.ico create mode 100644 18/18.rc create mode 100644 18/18.vcxproj create mode 100644 18/18.vcxproj.filters create mode 100644 18/Resource.h create mode 100644 18/desktop.ini create mode 100644 18/framework.h create mode 100644 18/small.ico create mode 100644 18/targetver.h create mode 100644 19-20/19-20.vcxproj create mode 100644 19-20/19-20.vcxproj.filters create mode 100644 19-20/19.c create mode 100644 19-20/20.c create mode 100644 19-20/desktop.ini create mode 100644 21-22/21-22.vcxproj create mode 100644 21-22/21-22.vcxproj.filters create mode 100644 21-22/21.c create mode 100644 21-22/22.c create mode 100644 21-22/desktop.ini create mode 100644 23-24/23-24.vcxproj create mode 100644 23-24/23-24.vcxproj.filters create mode 100644 23-24/23.c create mode 100644 23-24/24.c create mode 100644 23-24/desktop.ini create mode 100644 910/910.vcxproj create mode 100644 910/910.vcxproj.filters create mode 100644 910/desktop.ini create mode 100644 910/func.c create mode 100644 910/func.h create mode 100644 910/lab.c create mode 100644 Temp/19-20/desktop.ini create mode 100644 Temp/19-20/in1.txt create mode 100644 Temp/19-20/in2.txt create mode 100644 Temp/19-20/in3.txt create mode 100644 Temp/19-20/in4.txt create mode 100644 Temp/23-24/desktop.ini create mode 100644 Temp/23-24/in1.txt create mode 100644 Temp/23-24/in1html.txt create mode 100644 Temp/23-24/in2.txt create mode 100644 Temp/23-24/in2html.txt create mode 100644 Temp/23-24/in4.txt create mode 100644 Temp/23-24/out1.txt create mode 100644 Temp/23-24/out1html.html create mode 100644 Temp/23-24/out2.txt create mode 100644 Temp/23-24/out2html.html create mode 100644 Temp/23-24/out4.txt create mode 100644 Temp/desktop.ini create mode 100644 Temp/game.bin create mode 100644 Temp/start.bin create mode 100644 Temp/test.txt create mode 100644 additional_materials/L13-14/Z1.png create mode 100644 additional_materials/L13-14/Z2.png create mode 100644 additional_materials/L13-14/desktop.ini create mode 100644 additional_materials/L18/Z5.png create mode 100644 additional_materials/L18/desktop.ini create mode 100644 additional_materials/L3/L3Z2.png create mode 100644 additional_materials/L3/L3Z3.png create mode 100644 additional_materials/L3/L3Z5.png create mode 100644 additional_materials/L3/L3Z6.png create mode 100644 additional_materials/L3/desktop.ini create mode 100644 additional_materials/L4/L4Z2.png create mode 100644 additional_materials/L4/L4Z4.png create mode 100644 additional_materials/L4/L4Z6.png create mode 100644 additional_materials/L4/L4Z7.png create mode 100644 additional_materials/L4/desktop.ini create mode 100644 additional_materials/L7/L7Z1.png create mode 100644 additional_materials/L7/desktop.ini create mode 100644 additional_materials/L8/L8Z5.png create mode 100644 additional_materials/L8/desktop.ini create mode 100644 additional_materials/L9/Z3.png create mode 100644 additional_materials/L9/Z5.png create mode 100644 additional_materials/L9/Zpif.png create mode 100644 additional_materials/L9/desktop.ini create mode 100644 additional_materials/L9/tracing MN.png create mode 100644 additional_materials/desktop.ini create mode 100644 desktop.ini create mode 100644 lab.sln create mode 100644 lab/desktop.ini create mode 100644 lab/lab.vcxproj create mode 100644 lab/lab.vcxproj.filters create mode 100644 lab/lab1.c create mode 100644 lab/lab2.c create mode 100644 lab/lab3.c create mode 100644 lab/lab4.c create mode 100644 window/L8.cpp create mode 100644 window/L8.h create mode 100644 window/Paint.cpp create mode 100644 window/Paint.h create mode 100644 window/desktop.ini create mode 100644 window/framework.h create mode 100644 window/resource.h create mode 100644 window/small.ico create mode 100644 window/targetver.h create mode 100644 window/window.cpp create mode 100644 window/window.h create mode 100644 window/window.ico create mode 100644 window/window.rc create mode 100644 window/window.vcxproj create mode 100644 window/window.vcxproj.filters diff --git a/11/11.cpp b/11/11.cpp new file mode 100644 index 0000000..0704d38 --- /dev/null +++ b/11/11.cpp @@ -0,0 +1,341 @@ +// 11.cpp : Определяет точку входа для приложения. +// + +#include "stdio.h" +#include "framework.h" +#include "11.h" +#include "time.h" + + +//TODO: мои зависимости +#include "Function.h" +enum images image_now = (enum images)0; + +COLORREF colors1[9] = { + RGB(255,0,0), + RGB(255,127,0), + RGB(255,255,0), + RGB(127,255,0), + RGB(0,255,0), + RGB(0,255,127), + RGB(0,255,255), + RGB(0,127,255), + RGB(0,0,255), +}; + +#define L12 +const int v = 10; + +IMAGE img = { 20,20,v,v,RGB(255,0,255),arrow }; + +IMAGE imgs[4] = { + { 420,220,v,0,RGB(0,0,0),triangle }, + { 420,220,-v,0,RGB(255,0,0),diamond }, + { 420,220,0,v,RGB(0,0,255),crown }, + { 420,220,0,-v,RGB(0,255,0),flag }, +}; + + +#define MAX_LOADSTRING 100 + +// Глобальные переменные: +HINSTANCE hInst; // текущий экземпляр +WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка +WCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна + +// Отправить объявления функций, включенных в этот модуль кода: +ATOM MyRegisterClass(HINSTANCE hInstance); +BOOL InitInstance(HINSTANCE, int); +LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); +INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); + +int APIENTRY wWinMain(_In_ HINSTANCE hInstance, + _In_opt_ HINSTANCE hPrevInstance, + _In_ LPWSTR lpCmdLine, + _In_ int nCmdShow) +{ + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpCmdLine); + + // TODO: Разместите код здесь. + + // Инициализация глобальных строк + LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); + LoadStringW(hInstance, IDC_MY1112, szWindowClass, MAX_LOADSTRING); + MyRegisterClass(hInstance); + + // Выполнить инициализацию приложения: + if (!InitInstance (hInstance, nCmdShow)) + { + return FALSE; + } + + HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY1112)); + + MSG msg; + + // Цикл основного сообщения: + while (GetMessage(&msg, nullptr, 0, 0)) + { + if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + + return (int) msg.wParam; +} + + + +// +// ФУНКЦИЯ: MyRegisterClass() +// +// ЦЕЛЬ: Регистрирует класс окна. +// +ATOM MyRegisterClass(HINSTANCE hInstance) +{ + WNDCLASSEXW wcex; + + wcex.cbSize = sizeof(WNDCLASSEX); + + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = WndProc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = hInstance; + wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MY1112)); + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_MY1112); + wcex.lpszClassName = szWindowClass; + wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); + + return RegisterClassExW(&wcex); +} + +// +// ФУНКЦИЯ: InitInstance(HINSTANCE, int) +// +// ЦЕЛЬ: Сохраняет маркер экземпляра и создает главное окно +// +// КОММЕНТАРИИ: +// +// В этой функции маркер экземпляра сохраняется в глобальной переменной, а также +// создается и выводится главное окно программы. +// +BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) +{ + hInst = hInstance; // Сохранить маркер экземпляра в глобальной переменной + + HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); + + if (!hWnd) + { + return FALSE; + } + + ShowWindow(hWnd, nCmdShow); + UpdateWindow(hWnd); + + return TRUE; +} + +// +// ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM) +// +// ЦЕЛЬ: Обрабатывает сообщения в главном окне. +// +// WM_COMMAND - обработать меню приложения +// WM_PAINT - Отрисовка главного окна +// WM_DESTROY - отправить сообщение о выходе и вернуться +// +// +LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_COMMAND: + { + int wmId = LOWORD(wParam); + // Разобрать выбор в меню: + switch (wmId) + { + case IDM_ABOUT: + DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); + break; + case IDM_EXIT: + DestroyWindow(hWnd); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + } + break; + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hWnd, &ps); + // TODO: Добавьте сюда любой код прорисовки, использующий HDC... + +#ifndef L12 + void (*d[5])(HDC, int, int, COLORREF) = { + triangle, + arrow, + diamond, + flag, + crown + }; + + pattern1(hdc, (*d[image_now])); +#endif + +#ifdef L12 + img.func(hdc, img.x, img.y, img.color); + for (int i = 0; i < 4; i++) { + imgs[i].func(hdc, imgs[i].x, imgs[i].y, imgs[i].color); + } +#endif + + + EndPaint(hWnd, &ps); + } + break; + +#ifdef L12 + case WM_CREATE: + SetTimer(hWnd, 1, 40, 0); + SetTimer(hWnd, 2, 100, 0); + srand(time(NULL)); + break; + case WM_TIMER: + + switch (wParam) { + case 1: + RECT rect; + + GetClientRect(hWnd, &rect); + + if (img.x + 20 > rect.right) { + img.vx = -v; + } + + if (img.x - 20 < rect.left) { + img.vx = v; + } + + if (img.y + 20 > rect.bottom) { + img.vy = -v; + } + + if (img.y - 20 < rect.top) { + img.vy = v; + } + + img.x += img.vx; + img.y += img.vy; + + + + for (int i = 0; i < 4; i++) { + if (imgs[i].x + 20 > rect.right) { + imgs[i].vx = -v; + } + + if (imgs[i].x - 20 < rect.left) { + imgs[i].vx = v; + } + + if (imgs[i].y + 20 > rect.bottom) { + imgs[i].vy = -v; + } + + if (imgs[i].y - 20 < rect.top) { + imgs[i].vy = v; + } + + imgs[i].x += imgs[i].vx; + imgs[i].y += imgs[i].vy; + } + break; + case 2: + //img.color = colors1[rand() % 9]; + img.color = RGB(rand()%256, rand()%256, rand()%256); + for (int i = 0; i < 4; i++) { + imgs[i].color = RGB(rand() % 256, rand() % 256, rand() % 256); + } + break; + } + + + + InvalidateRect(hWnd, NULL, TRUE); + break; + + break; +#endif + + case WM_KEYDOWN: + switch (wParam) + { + case VK_RIGHT: + image_now = (enum images)(image_now + 1); + break; + case VK_LEFT: + image_now = (enum images)(image_now - 1); + break; + } +#ifndef L12 + if (image_now > 4 ) { + image_now = (enum images)0; + } + if (image_now < 0) { + image_now = (enum images)3; + } +#endif +#ifdef L12 + if (image_now > 8) { + image_now = (enum images)0; + } + if (image_now < 0) { + image_now = (enum images)8; + } +#endif + + + + //RedrawWindow(hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE); + InvalidateRect(hWnd, NULL, TRUE); + + + break; + case WM_DESTROY: + PostQuitMessage(0); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + return 0; +} + +// Обработчик сообщений для окна "О программе". +INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + UNREFERENCED_PARAMETER(lParam); + switch (message) + { + case WM_INITDIALOG: + return (INT_PTR)TRUE; + + case WM_COMMAND: + if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) + { + EndDialog(hDlg, LOWORD(wParam)); + return (INT_PTR)TRUE; + } + break; + } + return (INT_PTR)FALSE; +} diff --git a/11/11.h b/11/11.h new file mode 100644 index 0000000..b798bf5 --- /dev/null +++ b/11/11.h @@ -0,0 +1,3 @@ +#pragma once + +#include "resource.h" diff --git a/11/11.ico b/11/11.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3ec03bd617f32e58128fa977fd6ac9605124f4b GIT binary patch literal 46227 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 C + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {fd72aa5a-14f6-4851-83a9-b1d6948b0c86} + My1112 + 10.0 + 11 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + true + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/11/11.vcxproj.filters b/11/11.vcxproj.filters new file mode 100644 index 0000000..1aaeb40 --- /dev/null +++ b/11/11.vcxproj.filters @@ -0,0 +1,55 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + + + Исходные файлы + + + Исходные файлы + + + + + Файлы ресурсов + + + + + Файлы ресурсов + + + Файлы ресурсов + + + \ No newline at end of file diff --git a/11/Function.cpp b/11/Function.cpp new file mode 100644 index 0000000..d023148 --- /dev/null +++ b/11/Function.cpp @@ -0,0 +1,116 @@ +#include "Function.h" + +void triangle(HDC hdc, int x, int y, COLORREF color) { + HPEN hpen = CreatePen(PS_SOLID, 2, color); + SelectObject(hdc, hpen); + SelectObject(hdc, GetStockObject(NULL_BRUSH)); + + POINT pt[3] = { + {x,y - 20}, + {x + 20,y + 20}, + {x - 20, y + 20} + }; + + Polygon(hdc, pt, 3); + + DeleteObject(hpen); + SelectObject(hdc, GetStockObject(DC_PEN)); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void arrow(HDC hdc, int x, int y, COLORREF color) { + HPEN hpen = CreatePen(PS_SOLID, 2, color); + SelectObject(hdc, hpen); + SelectObject(hdc, GetStockObject(NULL_BRUSH)); + + POINT pt[4] = { + {x, y}, + {x + 20, y - 20}, + {x, y + 20}, + {x - 20, y - 20} + }; + + Polygon(hdc, pt, 4); + + DeleteObject(hpen); + SelectObject(hdc, GetStockObject(DC_PEN)); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void diamond(HDC hdc, int x, int y, COLORREF color) { + HPEN hpen = CreatePen(PS_SOLID, 2, color); + SelectObject(hdc, hpen); + SelectObject(hdc, GetStockObject(NULL_BRUSH)); + + POINT pt[4] = { + {x, y - 20}, + {x + 20, y}, + {x, y + 20}, + {x - 20, y} + }; + + Polygon(hdc, pt, 4); + + DeleteObject(hpen); + SelectObject(hdc, GetStockObject(DC_PEN)); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void flag(HDC hdc, int x, int y, COLORREF color) { + HPEN hpen = CreatePen(PS_SOLID, 2, color); + SelectObject(hdc, hpen); + + POINT pt[6] = { + {x - 20, y}, + {x + 20, y}, + {x, y - 10}, + {x + 20, y - 20}, + {x - 20, y - 20}, + {x - 20, y + 20} + }; + + Polyline(hdc, pt, 6); + + DeleteObject(hpen); + SelectObject(hdc, GetStockObject(DC_PEN)); +} + +void crown(HDC hdc, int x, int y, COLORREF color) { + HPEN hpen = CreatePen(PS_SOLID, 2, color); + SelectObject(hdc, hpen); + SelectObject(hdc, GetStockObject(NULL_BRUSH)); + + POINT pt[5] = { + {x, y}, + {x + 20, y - 20}, + {x + 20, y + 20}, + {x - 20, y + 20}, + {x - 20, y - 20}, + }; + + Polygon(hdc, pt, 5); + + DeleteObject(hpen); + SelectObject(hdc, GetStockObject(DC_PEN)); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void pattern1(HDC hdc, void (*f)(HDC, int, int, COLORREF)) { + COLORREF colors[Length] = { + RGB(255,0,0), + RGB(0,255,0), + RGB(0,0,255), + RGB(255,0,255), + RGB(255,255,0) + }; + POINT pt[Length] = { + {40,40}, + {240,40}, + {440,40}, + {40,240}, + {440,240} + }; + for (int i = 0; i < Length; i++) { + (*f)(hdc, pt[i].x, pt[i].y, colors[i]); + } +} \ No newline at end of file diff --git a/11/Function.h b/11/Function.h new file mode 100644 index 0000000..fa331f8 --- /dev/null +++ b/11/Function.h @@ -0,0 +1,31 @@ +#pragma once + +#include + +#define Length 5 + +enum images { + i_triangle, + i_arrow, + i_diamond, + i_flag, + i_crown +}; + +typedef struct Image_cords { + int x; + int y; + int vx; + int vy; + COLORREF color; + void (*func)(HDC, int, int, COLORREF); +} IMAGE; + +void triangle(HDC hdc, int x, int y, COLORREF color); +void arrow(HDC hdc, int x, int y, COLORREF color); +void diamond(HDC hdc, int x, int y, COLORREF color); +void flag(HDC hdc, int x, int y, COLORREF color); +void crown(HDC hdc, int x, int y, COLORREF color); + +void pattern1(HDC hdc, void (*f)(HDC, int, int, COLORREF)); + diff --git a/11/Resource.h b/11/Resource.h new file mode 100644 index 0000000..0068fc4 --- /dev/null +++ b/11/Resource.h @@ -0,0 +1,30 @@ +//{{NO_DEPENDENCIES}} +// Включаемый файл, созданный в Microsoft Visual C++. +// Используется 11-12.rc + +#define IDS_APP_TITLE 103 + +#define IDR_MAINFRAME 128 +#define IDD_MY1112_DIALOG 102 +#define IDD_ABOUTBOX 103 +#define IDM_ABOUT 104 +#define IDM_EXIT 105 +#define IDI_MY1112 107 +#define IDI_SMALL 108 +#define IDC_MY1112 109 +#define IDC_MYICON 2 +#ifndef IDC_STATIC +#define IDC_STATIC -1 +#endif +// Следующие стандартные значения для новых объектов +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS + +#define _APS_NO_MFC 130 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/11/desktop.ini b/11/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/11/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/11/framework.h b/11/framework.h new file mode 100644 index 0000000..a8f6dc8 --- /dev/null +++ b/11/framework.h @@ -0,0 +1,15 @@ +// header.h: включаемый файл для стандартных системных включаемых файлов +// или включаемые файлы для конкретного проекта +// + +#pragma once + +#include "targetver.h" +#define WIN32_LEAN_AND_MEAN // Исключите редко используемые компоненты из заголовков Windows +// Файлы заголовков Windows +#include +// Файлы заголовков среды выполнения C +#include +#include +#include +#include diff --git a/11/small.ico b/11/small.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3ec03bd617f32e58128fa977fd6ac9605124f4b GIT binary patch literal 46227 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 diff --git a/13-14/13-14.vcxproj b/13-14/13-14.vcxproj new file mode 100644 index 0000000..ce9b85f --- /dev/null +++ b/13-14/13-14.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {161816fb-da2b-43f7-8cfe-2f3a03bf2f97} + My1314 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/13-14/13-14.vcxproj.filters b/13-14/13-14.vcxproj.filters new file mode 100644 index 0000000..1b6f62e --- /dev/null +++ b/13-14/13-14.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + Исходные файлы + + + + + Файлы заголовков + + + \ No newline at end of file diff --git a/13-14/Function.c b/13-14/Function.c new file mode 100644 index 0000000..c8c885a --- /dev/null +++ b/13-14/Function.c @@ -0,0 +1,266 @@ +#include "Function.h" + +int arr[DEFAULT_LENGHT]; +int lenght = 0; + +Element getMax(), getMin(); + +//13 +void setArray() { + printf("n = "); + scanf_s("%d", &lenght); + + printf(" %d : ", lenght); + for (int i = 0; i < lenght; i++) { + scanf_s("%d", &arr[i]); + } +} + +void oddX10() { + for (int i = 0; i < lenght; i++) { + if (arr[i] % 2 != 0) { + arr[i] *= 10; + } + } +} + +int countGreaterThen(int greater) { + int k = 0; + for (int i = 0; i < lenght; i++) { + if (arr[i] > greater) { + k++; + } + } + return k; +} + +void timesLastEven(int times) { + for (int i = lenght-1; i >= 0; i--) { + if (arr[i] % 2 == 0) { + arr[i] *= times; + break; + } + } +} + +int countEvenLeftOfMin() { + Element min = getMin(); + + int k = 0; + for (int i = 0; i < min.index; i++) { + if (arr[i] % 2 == 0) { + k++; + } + } + return k; +} + +void timesOddRightOfMin(int times) { + Element min = getMin(); + for (int i = min.index + 1; i < lenght; i++) { + if (arr[i] % 2 != 0) { + arr[i] *= times; + } + } +} + +void ReplaceMinMax() { + Element minGet = getMin(); + Element maxGet = getMax(); + arr[minGet.index] = maxGet.value; + arr[maxGet.index] = minGet.value; +} + +void allEven(int times) { + for (int i = 0; i < lenght; i++) { + if (arr[i] % 2 == 0) arr[i] *= times; + } +} + +void allLess4() { + for (int i = 0; i < lenght; i++) { + if (arr[i] < 4) arr[i] = 4; + } +} + +void right0() { + Element max = getMax(); + for (int i = max.index + 1; i < lenght; i++) { + arr[i] = 0; + } +} + +Element getMin() { + int min = arr[0]; + int index = 0; + for (int i = 1; i < lenght; i++) { + if (arr[i] < min) { + min = arr[i]; + index = i; + } + } + + Element answer = { min, index }; + + return answer; +} + +Element getMax() { + int max = arr[0]; + int index = 0; + for (int i = 1; i < lenght; i++) { + if (arr[i] > max) { + max = arr[i]; + index = i; + } + } + + Element answer = { max, index }; + + return answer; +} + +//14 +void deleteElement(int index) { + if (! (index >= 0 && index <= lenght)) { + return; + } + + lenght -= 1; + + for (int i = index; i < lenght; i++) { + arr[i] = arr[i+1]; + } + +} + +void insertElement(int value, int index) { + if (! (index >= 0 && index <= lenght)) { + return; + } + + for (int i = lenght; i >index; i--) { + arr[i] = arr[i-1]; + } + lenght += 1; + arr[index] = value; +} + +void printArr() { + printf("< "); + for (int i = 0; i < lenght; i++) { + printf("%d ", arr[i]); + } + printf(">\n"); +} + +void menuText() { + printf("\n\n"); + if (lenght != 0) { + printf(": %d\n", lenght); + printArr(); + } + printf("--------------\n"); + printf(" :\n"); + printf("1) \n"); + printf("2) 10 \n"); + printf("3) \n"); + printf("4) > 10\n"); + printf("5) 2 \n"); + printf("6) \n"); + printf("7) 10 \n"); + printf("8) min max\n"); + printf("9) x-1\n"); + printf("10) 4 el<4\n"); + printf("11) el>>max 0\n"); + printf("21) \n"); + printf("22) \n"); + printf("23) \n"); + printf("24) 0\n"); + printf("25) \n"); + printf("\n"); + printf("0) \n"); + printf(" >>> "); +} + +void startProg() { + int ans; + int ind, value; + do { + menuText(); + scanf_s("%d", &ans); + + switch (ans) + { + case 1: + setArray(); + break; + case 2: + oddX10(); + break; + case 3: + printf("min = %d", getMin().index); + break; + case 4: + printf("k = %d", countGreaterThen(10)); + break; + case 5: + timesLastEven(2); + break; + case 6: + printf("k = %d", countEvenLeftOfMin()); + break; + case 7: + timesOddRightOfMin(10); + break; + case 8: + ReplaceMinMax(); + break; + case 9: + allEven(-1); + break; + case 10: + allLess4(); + break; + case 11: + right0(); + break; + case 21: + printf("index: "); + ; + scanf_s("%d", &ind); + deleteElement(ind); + break; + case 22: + printf("index: "); + scanf_s("%d", &ind); + + printf("value: "); + scanf_s("%d", &value); + insertElement(value,ind); + break; + case 23: + deleteElement(getMin().index); + break; + case 24: + insertElement(0, getMin().index); + break; + case 25: + value = arr[0]; + ind = 0; + for (int i = 1; i < lenght; i++) { + if (arr[i] % 2 == 0 && arr[i] > value) { + value = arr[i]; + ind = i; + } + + } + deleteElement(ind); + break; + case 0: + break; + default: + break; + } + } while (ans != 0); +} \ No newline at end of file diff --git a/13-14/Function.h b/13-14/Function.h new file mode 100644 index 0000000..f061f5a --- /dev/null +++ b/13-14/Function.h @@ -0,0 +1,14 @@ +#pragma once + +#include +#include + +#define DEFAULT_LENGHT 10 + +extern int arr[DEFAULT_LENGHT]; + +typedef struct { + int value, index; +} Element; + +void startProg(); \ No newline at end of file diff --git a/13-14/Main.c b/13-14/Main.c new file mode 100644 index 0000000..913310e --- /dev/null +++ b/13-14/Main.c @@ -0,0 +1,12 @@ +#include +#include +#include "Function.h" + +int main() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + + startProg(); + + return 0; +} \ No newline at end of file diff --git a/13-14/desktop.ini b/13-14/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/13-14/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/15/15.vcxproj b/15/15.vcxproj new file mode 100644 index 0000000..1c79105 --- /dev/null +++ b/15/15.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {8cbc5826-531f-45fd-aa76-17dcd4e25d30} + My15 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/15/15.vcxproj.filters b/15/15.vcxproj.filters new file mode 100644 index 0000000..7d75e84 --- /dev/null +++ b/15/15.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + Исходные файлы + + + + + Файлы заголовков + + + \ No newline at end of file diff --git a/15/Main.c b/15/Main.c new file mode 100644 index 0000000..e418ee4 --- /dev/null +++ b/15/Main.c @@ -0,0 +1,13 @@ +#include +#include + + + +int main() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + + startProg(); + + return 0; +} \ No newline at end of file diff --git a/15/TwoDimentionalArray.c b/15/TwoDimentionalArray.c new file mode 100644 index 0000000..acdaefa --- /dev/null +++ b/15/TwoDimentionalArray.c @@ -0,0 +1,240 @@ +#include "TwoDimentionalArray.h" + +int arr[MAX_LENGTH][MAX_LENGTH]; +int width, height; + +void inputdem() { + printf("height "); + scanf_s("%d", &height); + + printf("width "); + scanf_s("%d", &width); +} + +void randomEl() { + if (width == 0 || height == 0) inputdem(); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + arr[i][j] = rand() % 10 + 1; + } + } +} + +void iX10j() { + if (width == 0 || height == 0) inputdem(); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + arr[i][j] = (i+1)*10+j+1; + } + } +} + +void setZero() { + if (width == 0 || height == 0) inputdem(); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + arr[i][j] = 0; + } + } +} + +void inputArr() { + inputdem(); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + scanf_s("%d", &arr[i][j]); + } + } +} + +void oddX10() { + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + if (arr[i][j] % 2 != 0) { + arr[i][j] = arr[i][j] * 10; + } + } + } +} + +void del10() { + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + if (arr[i][j] % 10 == 0) { + arr[i][j] = arr[i][j] / 10; + } + } + } +} + +void save() { + FILE* fout = fopen("D:\\university\\\\lab\\Temp\\test.txt", "wt"); + + if (fout == NULL) { + printf(" "); + return; + } + + fprintf(fout, "%d ", height); + fprintf(fout, "%d\n", width); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + fprintf(fout, "%d ", arr[i][j]); + } + fprintf(fout, "\n"); + } + + printf("\n"); + + fclose(fout); +} + +void load() { + FILE* fin = fopen("D:\\university\\\\lab\\Temp\\test.txt", "rt"); + + if (fin == NULL) { + printf(" "); + return; + } + + fscanf_s(fin, "%d", &height); + fscanf_s(fin, "%d", &width); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + fscanf_s(fin, "%d", &arr[i][j]); + } + } + + printf("\n"); + + fclose(fin); +} + +void dublicateCol() { + int index; + printf("index "); + scanf_s("%d", &index); + for (int i = width; i > index; i--) { + for (int j = 0; j < height; j++) { + arr[j][i] = arr[j][i - 1]; + } + } + width += 1; +} + +void DeleteRow() { + int index; + printf("index "); + scanf_s("%d", &index); + height -= 1; + for (int i = index; i < height; i++) { + for (int j = 0; j < width; j++) { + arr[i][j] = arr[i + 1][j]; + } + } +} + +void zeroWhereRepeat() { + for (int j = 0; j < width; j++) { + + bool DO = false; + + for (int i = 0; i < height - 1; i++) { + for (int ii = i + 1; ii < height; ii++) { + if (arr[i][j] == arr[ii][j]) { + DO = true; + goto end; + } + } + } + end: + if (DO) { + for (int i = 0; i < height; i++) { + arr[i][j] = 0; + } + } + } + +} + +void printArr() { + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + printf("%3d ", arr[i][j]); + } + printf("\n"); + } +} + +void menuText() { + printf("\n\n"); + if (height != 0) { + printf(": %d\n", height); + printArr(arr, width, height); + } + printf("--------------\n"); + printf(" :\n"); + printf("1) i * 10 + j\n"); + printf("2) 0\n"); + printf("3) \n"); + printf("4) 10\n"); + printf("5) % 10 1del10\n"); + printf("6) \n"); + printf("71) \n"); + printf("72) \n"); + printf("8) 0 \n"); + printf("9) \n"); + printf("10) \n"); + printf("\n"); + printf("-1) \n"); + printf(" >>> "); +} + +void startProg() { + + srand(time(NULL)); + + int ans; + do { + menuText(); + scanf_s("%d", &ans); + + switch (ans) + { + case 1: + iX10j(); + break; + case 2: + setZero(); + break; + case 3: + randomEl(); + break; + case 4: + oddX10(); + break; + case 5: + del10(); + break; + case 6: + inputArr(); + break; + case 71: + save(); + break; + case 72: + load(); + break; + case 8: + zeroWhereRepeat(); + break; + case 9: + dublicateCol(); + break; + case 10: + DeleteRow(); + default: + break; + } + } while (ans != -1); +} \ No newline at end of file diff --git a/15/TwoDimentionalArray.h b/15/TwoDimentionalArray.h new file mode 100644 index 0000000..d277d0e --- /dev/null +++ b/15/TwoDimentionalArray.h @@ -0,0 +1,10 @@ +#pragma once +#include +#include +#include +#include +#include + +#define MAX_LENGTH 10 + +void startProg(); \ No newline at end of file diff --git a/15/desktop.ini b/15/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/15/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/16/16.cpp b/16/16.cpp new file mode 100644 index 0000000..cbc1095 --- /dev/null +++ b/16/16.cpp @@ -0,0 +1,514 @@ +// 16.cpp : Определяет точку входа для приложения. +// + +#include "framework.h" +#include "16.h" +#include + + + +enum Material { + void_m, + player_m, + wall_m, + gold_m +}; + +#define WIDTH_MAP 30 +#define HEIGHT_MAP 20 + +#define WIDTH_1 20 +#define HEIGHT_1 20 + +int map[HEIGHT_MAP][WIDTH_MAP] = { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0}, + {0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 3, 3, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 0, 0, 0}, + + {0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 2, 0}, + {0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0}, + {0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +}; + +int step = 0, gold = 0; + +POINT getPlayerCoord() { + + for (int i = 0; i < WIDTH_MAP; i++) { + for (int j = 0; j < WIDTH_MAP; j++) { + if (map[i][j] == 1) return { j,i }; + } + } + return { -1,-1 }; +} + +void right() { + POINT c = getPlayerCoord(); + if (c.x < 0 || map[c.y][c.x + 1] == wall_m) return; + + if (map[c.y][c.x + 1] == gold_m) { + gold += 1; + } + + map[c.y][c.x + 1] = 1; + map[c.y][c.x] = void_m; + step++; +} + +void left() { + POINT c = getPlayerCoord(); + if (c.x < 0 || map[c.y][c.x - 1] == wall_m) return; + + if (map[c.y][c.x - 1] == gold_m) { + gold += 1; + } + + map[c.y][c.x - 1] = 1; + map[c.y][c.x] = void_m; + step++; +} + +void down() { + POINT c = getPlayerCoord(); + if (c.x < 0 || map[c.y + 1][c.x] == wall_m) return; + + if (map[c.y + 1][c.x] == gold_m) { + gold += 1; + } + + map[c.y + 1][c.x] = 1; + map[c.y][c.x] = void_m; + step++; +} + +void up() { + POINT c = getPlayerCoord(); + if (c.x < 0 || map[c.y - 1][c.x] == wall_m) return; + + if (map[c.y - 1][c.x] == gold_m) { + gold += 1; + } + + map[c.y - 1][c.x] = 1; + map[c.y][c.x] = void_m; + step++; +} + +void createWall() { + POINT c = getPlayerCoord(); + if (c.x < 0 || c.x - 1 < 0) return; + + map[c.y][c.x - 1] = wall_m; +} + +void dropGold() { + POINT c = getPlayerCoord(); + if (c.x < 0 || c.x + 1 > WIDTH_MAP || map[c.y][c.x + 1] == gold_m || map[c.y][c.x + 1] == wall_m) return; + + if (gold > 0) { + map[c.y][c.x + 1] = gold_m; + gold--; + } +} + +void Z() { + POINT c = getPlayerCoord(); + if (c.x < 0) return; + + for (int i = c.x + 1; i < WIDTH_MAP; i++) { + if (map[c.y][i] == wall_m) map[c.y][i] = void_m; + } +} + +void U() { + POINT c = getPlayerCoord(); + if (c.x < 0) return; + + + for (int i = -2; i < 3; i++) { + if (i == 0 || c.x+i < 0 || c.x + i >= WIDTH_MAP || c.y + i < 0 || c.y - i >= HEIGHT_MAP) continue; + map[c.y + i][c.x + i] = wall_m; + } + + for (int i = -2; i < 3; i++) { + if (i == 0 || c.x + i < 0 || c.x + i >= WIDTH_MAP || c.y - i < 0 || c.y + i >= HEIGHT_MAP) continue; + map[c.y - i][c.x + i] = wall_m; + } +} + +void D() { + POINT c = getPlayerCoord(); + if (c.x < 0) return; + + + for (int i = -2; i < 3; i++) { + if (gold <= 0) break; + if (i == 0 || c.x + i < 0 || c.x + i >= WIDTH_MAP || c.y + i < 0 || c.y - i >= HEIGHT_MAP) continue; + if (map[c.y + i][c.x + i] == wall_m) continue; + map[c.y + i][c.x + i] = gold_m; + gold--; + } + + for (int i = -2; i < 3; i++) { + if (gold <= 0) break; + if (i == 0 || c.x + i < 0 || c.x + i >= WIDTH_MAP || c.y - i < 0 || c.y + i >= HEIGHT_MAP) continue; + if (map[c.y - i][c.x + i] == wall_m) continue; + map[c.y - i][c.x + i] = gold_m; + gold--; + } +} + +void save() { + FILE* fout; + fopen_s(&fout, "D:\\university\\ОАИП\\lab\\Temp\\game.bin", "wb"); + if (fout == NULL) { + printf(""); + return; + } + int width = WIDTH_MAP, height = HEIGHT_MAP; + + fwrite(&width, sizeof(width), 1, fout); + fwrite(&height, sizeof(height), 1, fout); + fwrite(&map, sizeof(map), 1, fout); + fwrite(&step, sizeof(step), 1, fout); + fwrite(&gold, sizeof(gold), 1, fout); + fclose(fout); +} + +void load() { + FILE* fin; + fopen_s(&fin, "D:\\university\\ОАИП\\lab\\Temp\\game.bin", "rb"); + if (fin == NULL) { + printf(""); + return; + } + int width, height; + + fread(&width, sizeof(width), 1, fin); + fread(&height, sizeof(height), 1, fin); + fread(&map, sizeof(map), 1, fin); + fread(&step, sizeof(step), 1, fin); + fread(&gold, sizeof(gold), 1, fin); + fclose(fin); +} + +void restartGame() { + FILE* fin; + fopen_s(&fin, "D:\\university\\ОАИП\\lab\\Temp\\start.bin", "rb"); + if (fin == NULL) { + printf(""); + return; + } + int width, height; + + fread(&width, sizeof(width), 1, fin); + fread(&height, sizeof(height), 1, fin); + fread(&map, sizeof(map), 1, fin); + fread(&step, sizeof(step), 1, fin); + fread(&gold, sizeof(gold), 1, fin); + fclose(fin); +} + +void drawMap(HDC hdc) { + HBRUSH materials[4] = { + (HBRUSH)CreateSolidBrush(RGB(127,127,127)), + (HBRUSH)CreateSolidBrush(RGB(0,0,255)), + (HBRUSH)CreateSolidBrush(RGB(0,0,0)), + (HBRUSH)CreateSolidBrush(RGB(255,255,0)) + }; + + for (int i = 0; i < HEIGHT_MAP; i++) { + for (int j = 0; j < WIDTH_MAP; j++) { + RECT r = { j * WIDTH_1, i * HEIGHT_1, (j + 1) * WIDTH_1, (i + 1) * HEIGHT_1 }; + FillRect(hdc, &r, materials[map[i][j]]); + } + } + + char text[80]; + sprintf_s(text, "steps = %d, gold = %d", step, gold); + TextOutA(hdc, 10, HEIGHT_MAP * HEIGHT_1, (LPCSTR)text, strlen(text)); + + for (int i = 0; i < 4; i++) DeleteObject(materials[i]); +} + +void Midas(int i, int j) { + if (map[i][j] == 2) { + map[i][j] = 3; + if (i > 0) Midas(i - 1, j); + if (i < HEIGHT_MAP - 1) Midas(i + 1, j); + if (j > 0) Midas(i, j - 1); + if (i < WIDTH_MAP) Midas(i, j + 1); + } +} + +void M() { + POINT c = getPlayerCoord(); + Midas(c.y, c.x + 1); +} + + + + + + + + + + + + + + + + + + + + + +#define MAX_LOADSTRING 100 + +// Глобальные переменные: +HINSTANCE hInst; // текущий экземпляр +WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка +WCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна + +// Отправить объявления функций, включенных в этот модуль кода: +ATOM MyRegisterClass(HINSTANCE hInstance); +BOOL InitInstance(HINSTANCE, int); +LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); +INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); + +int APIENTRY wWinMain(_In_ HINSTANCE hInstance, + _In_opt_ HINSTANCE hPrevInstance, + _In_ LPWSTR lpCmdLine, + _In_ int nCmdShow) +{ + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpCmdLine); + + // TODO: Разместите код здесь. + + // Инициализация глобальных строк + LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); + LoadStringW(hInstance, IDC_MY16, szWindowClass, MAX_LOADSTRING); + MyRegisterClass(hInstance); + + // Выполнить инициализацию приложения: + if (!InitInstance (hInstance, nCmdShow)) + { + return FALSE; + } + + HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY16)); + + MSG msg; + + // Цикл основного сообщения: + while (GetMessage(&msg, nullptr, 0, 0)) + { + if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + + return (int) msg.wParam; +} + +// +// ФУНКЦИЯ: MyRegisterClass() +// +// ЦЕЛЬ: Регистрирует класс окна. +// +ATOM MyRegisterClass(HINSTANCE hInstance) +{ + WNDCLASSEXW wcex; + + wcex.cbSize = sizeof(WNDCLASSEX); + + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = WndProc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = hInstance; + wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MY16)); + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_MY16); + wcex.lpszClassName = szWindowClass; + wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); + + return RegisterClassExW(&wcex); +} + +// +// ФУНКЦИЯ: InitInstance(HINSTANCE, int) +// +// ЦЕЛЬ: Сохраняет маркер экземпляра и создает главное окно +// +// КОММЕНТАРИИ: +// +// В этой функции маркер экземпляра сохраняется в глобальной переменной, а также +// создается и выводится главное окно программы. +// +BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) +{ + hInst = hInstance; // Сохранить маркер экземпляра в глобальной переменной + + HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); + + if (!hWnd) + { + return FALSE; + } + + ShowWindow(hWnd, nCmdShow); + UpdateWindow(hWnd); + + return TRUE; +} + +// +// ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM) +// +// ЦЕЛЬ: Обрабатывает сообщения в главном окне. +// +// WM_COMMAND - обработать меню приложения +// WM_PAINT - Отрисовка главного окна +// WM_DESTROY - отправить сообщение о выходе и вернуться +// +// +LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_COMMAND: + { + int wmId = LOWORD(wParam); + // Разобрать выбор в меню: + switch (wmId) + { + case IDM_ABOUT: + DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); + break; + case ISave: + save(); + break; + case ILoad: + load(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case IDM_EXIT: + DestroyWindow(hWnd); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + } + break; + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hWnd, &ps); + // TODO: Добавьте сюда любой код прорисовки, использующий HDC... + + drawMap(hdc); + + EndPaint(hWnd, &ps); + } + break; + case WM_CHAR: + switch (wParam) { + case 'l': + createWall(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case 'r': + dropGold(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case 'z': + Z(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case 'u': + U(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case 'd': + D(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case 'm': + M(); + InvalidateRect(hWnd, NULL, TRUE); + break; + } + break; + case WM_KEYDOWN: + switch (wParam) + { + case VK_RIGHT: + right(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case VK_LEFT: + left(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case VK_UP: + up(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case VK_DOWN: + down(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case VK_F5: + save(); + break; + case VK_F9: + load(); + InvalidateRect(hWnd, NULL, TRUE); + break; + case VK_F6: + restartGame(); + InvalidateRect(hWnd, NULL, TRUE); + break; + } + break; + case WM_DESTROY: + PostQuitMessage(0); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + return 0; +} + +// Обработчик сообщений для окна "О программе". +INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + UNREFERENCED_PARAMETER(lParam); + switch (message) + { + case WM_INITDIALOG: + return (INT_PTR)TRUE; + + case WM_COMMAND: + if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) + { + EndDialog(hDlg, LOWORD(wParam)); + return (INT_PTR)TRUE; + } + break; + } + return (INT_PTR)FALSE; +} diff --git a/16/16.h b/16/16.h new file mode 100644 index 0000000..b798bf5 --- /dev/null +++ b/16/16.h @@ -0,0 +1,3 @@ +#pragma once + +#include "resource.h" diff --git a/16/16.ico b/16/16.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3ec03bd617f32e58128fa977fd6ac9605124f4b GIT binary patch literal 46227 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 + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {ca6a78f7-f0cf-443e-a713-347385883516} + My16 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + true + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/16/16.vcxproj.filters b/16/16.vcxproj.filters new file mode 100644 index 0000000..b2a7c4b --- /dev/null +++ b/16/16.vcxproj.filters @@ -0,0 +1,49 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + + + Исходные файлы + + + + + Файлы ресурсов + + + + + Файлы ресурсов + + + Файлы ресурсов + + + \ No newline at end of file diff --git a/16/desktop.ini b/16/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/16/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/16/framework.h b/16/framework.h new file mode 100644 index 0000000..a8f6dc8 --- /dev/null +++ b/16/framework.h @@ -0,0 +1,15 @@ +// header.h: включаемый файл для стандартных системных включаемых файлов +// или включаемые файлы для конкретного проекта +// + +#pragma once + +#include "targetver.h" +#define WIN32_LEAN_AND_MEAN // Исключите редко используемые компоненты из заголовков Windows +// Файлы заголовков Windows +#include +// Файлы заголовков среды выполнения C +#include +#include +#include +#include diff --git a/16/resource.h b/16/resource.h new file mode 100644 index 0000000..f4ed070 --- /dev/null +++ b/16/resource.h @@ -0,0 +1,31 @@ +//{{NO_DEPENDENCIES}} +// Включаемый файл, созданный в Microsoft Visual C++. +// Используется 16.rc +// +#define IDC_MYICON 2 +#define IDD_MY16_DIALOG 102 +#define IDS_APP_TITLE 103 +#define IDD_ABOUTBOX 103 +#define IDM_ABOUT 104 +#define IDM_EXIT 105 +#define IDI_MY16 107 +#define IDI_SMALL 108 +#define IDC_MY16 109 +#define IDR_MAINFRAME 128 +#define ID_32771 32771 +#define ID_32772 32772 +#define ILoad 32773 +#define ISave 32774 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32775 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/16/small.ico b/16/small.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3ec03bd617f32e58128fa977fd6ac9605124f4b GIT binary patch literal 46227 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 diff --git a/17/17.c b/17/17.c new file mode 100644 index 0000000..5ef070a --- /dev/null +++ b/17/17.c @@ -0,0 +1,112 @@ +#include + +int fact(int); +void f1(int), f2(int), f3(int); +void recEGE1(int); +void Z5(int); +void Z6(int); +void Z7G(int), Z7F(int); +void Z9V8(int); + +int main() { + printf("%d", fact(5)); + + printf("\n"); + + f1(11); + printf("\n"); + f2(11); + printf("\n"); + f3(11); + + printf("\n"); + + recEGE1(3); + + printf("\n\n"); + + Z5(10); + + printf("\n\n"); + + Z6(1); + + printf("\n\n"); + + Z7F(11); + + printf("\n\n"); + + Z9V8(5); + return 0; +} + +int fact(int a) { + if (a < 0) return -1; + if (a == 0) return 1; + return fact(a - 1) * a; +} + +void f1(int a) { + if (a < 0) return; + printf("%d ", a); + if (a >= 2) f1(a - 2); +} + +void f2(int a) { + if (a < 0) return; + if (a >= 2) f2(a - 2); + printf("%d ", a); +} + +void f3(int a) { + if (a < 0) return; + if (a < 2) { + printf("%d ", a); + return; + } + printf("%d ", a); + if (a >= 2) f3(a - 2); + printf("%d ", a); +} + +void recEGE1(int n) { + if (n >= 1) { + printf("%d ", n); + recEGE1(n - 1); + recEGE1(n - 1); + } +} + + +void Z5(int n) { + if (n >= 1) { + printf("%d\n", n); + Z5(n - 3); + Z5(n - 4); + } +} + +void Z6(int n) { + if (n < 5) { + printf("%d\n", n); + Z5(n + 1); + Z5(n + 3); + } +} + +void Z7F(int a) { + if (a > 0) Z7G(a - 1); +}; + +void Z7G(int a) { + printf("*"); + if (a > 1) Z7F(a - 3); +}; + +void Z9V8(int a) { + if (a < 0) return; + printf("<*%d*", a); + if (a > 1) Z9V8(a - 1); + printf("%d>", a); +} \ No newline at end of file diff --git a/17/17.vcxproj b/17/17.vcxproj new file mode 100644 index 0000000..63d5667 --- /dev/null +++ b/17/17.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {85e1e279-bfca-48f2-ad89-22f8b3934ca4} + My17 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/17/17.vcxproj.filters b/17/17.vcxproj.filters new file mode 100644 index 0000000..de798d5 --- /dev/null +++ b/17/17.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + \ No newline at end of file diff --git a/17/desktop.ini b/17/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/17/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/18/18.cpp b/18/18.cpp new file mode 100644 index 0000000..091202d --- /dev/null +++ b/18/18.cpp @@ -0,0 +1,448 @@ +// 18.cpp : Определяет точку входа для приложения. +// + +#include "framework.h" +#include "stdio.h" +#include "18.h" + +#define MAX_LOADSTRING 100 + +int count = 0; +int Action = 0; + + + + + + + +void triangle(HDC hdc, int cx, int cy, int size) { + SelectObject(hdc, GetStockObject(NULL_BRUSH)); + POINT pt[3] = { + {cx,cy + size}, + {cx + size,cy - size}, + {cx - size,cy - size} + }; + Polygon(hdc, pt, 3); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void triangleFact1(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + triangle(hdc, cx, cy, size); + triangleFact1(hdc, cx - size, cy - size, size / 2); + triangleFact1(hdc, cx, cy + size, size / 2); +} + +void triangleFact2(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + triangle(hdc, cx, cy, size); + triangleFact2(hdc, cx - size, cy - size, size / 2); + triangleFact2(hdc, cx + size, cy - size, size / 2); +} + +void triangleFact3(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + triangle(hdc, cx, cy, size); + triangleFact3(hdc, cx - size, cy - size, size / 2); + triangleFact3(hdc, cx + size, cy - size, size / 2); + triangleFact3(hdc, cx, cy + size, size / 2); +} + +void time(HDC hdc, int cx, int cy, int size) { + SelectObject(hdc, GetStockObject(NULL_BRUSH)); + POINT pt[4] = { + {cx + size,cy + size}, + {cx - size,cy + size}, + {cx + size / 2,cy - size}, + {cx - size / 2,cy - size}, + }; + Polygon(hdc, pt, 4); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void timeFact1(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + time(hdc, cx, cy, size); + timeFact1(hdc, cx - size / 2 , cy - size, size / 2); +} + +void timeFact2(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + time(hdc, cx, cy, size); + timeFact2(hdc, cx - size / 2, cy - size, size / 2); + timeFact2(hdc, cx + size / 2, cy - size, size / 2); +} + +void timeFact3(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + time(hdc, cx, cy, size); + timeFact3(hdc, cx - size / 2, cy - size, size / 2); + timeFact3(hdc, cx - size, cy + size, size / 2); + timeFact3(hdc, cx + size / 2, cy - size, size / 2); + timeFact3(hdc, cx + size, cy + size, size / 2); +} + +void dimond(HDC hdc, int cx, int cy, int size) { + SelectObject(hdc, GetStockObject(NULL_BRUSH)); + POINT pt[4] = { + {cx,cy - size}, + {cx + size,cy}, + {cx,cy + size}, + {cx - size,cy}, + }; + Polygon(hdc, pt, 4); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void dimondFact1(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + dimond(hdc, cx, cy, size); + dimondFact1(hdc, cx - size, cy, size / 2); + dimondFact1(hdc, cx + size, cy, size / 2); +} + +void dimondFact2(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + dimond(hdc, cx, cy, size); + dimondFact2(hdc, cx - size, cy, size / 2); + dimondFact2(hdc, cx + size, cy, size / 2); + dimondFact2(hdc, cx, cy + size, size / 2); +} + +void dimondFact3(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + dimond(hdc, cx, cy, size); + dimondFact2(hdc, cx - size, cy, size / 2); + dimondFact2(hdc, cx + size, cy, size / 2); + dimondFact2(hdc, cx, cy - size, size / 2); +} + +void dimondFact4(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + dimond(hdc, cx, cy, size); + dimondFact3(hdc, cx - size, cy, size / 2); + dimondFact3(hdc, cx + size, cy, size / 2); + dimondFact3(hdc, cx, cy + size, size / 2); + dimondFact3(hdc, cx, cy - size, size / 2); +} + +void star(HDC hdc, int cx, int cy, int size) { + SelectObject(hdc, GetStockObject(NULL_BRUSH)); + POINT pt[8] = { + {cx,cy - size}, + {cx + size / 4,cy - size / 4}, + {cx + size,cy}, + {cx + size / 4,cy + size / 4}, + {cx,cy + size}, + {cx - size / 4,cy + size / 4}, + {cx - size,cy}, + {cx - size / 4,cy - size / 4}, + }; + Polygon(hdc, pt, 8); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void starFact1(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + star(hdc, cx, cy, size); + starFact1(hdc, cx - size, cy, size / 2); + starFact1(hdc, cx + size, cy, size / 2); +} + +void starFact2(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + star(hdc, cx, cy, size); + starFact2(hdc, cx, cy - size, size / 2); + starFact2(hdc, cx, cy + size, size / 2); +} + +void starFact3(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + star(hdc, cx, cy, size); + starFact3(hdc, cx, cy - size, size / 2); + starFact3(hdc, cx, cy + size, size / 2); + starFact3(hdc, cx - size, cy, size / 2); +} + +void arrow(HDC hdc, int cx, int cy, int size) { + SelectObject(hdc, GetStockObject(NULL_BRUSH)); + POINT pt[7] = { + {cx - size / 2,cy - size}, + {cx + size / 2,cy - size}, + {cx + size / 2,cy}, + {cx + size,cy}, + {cx,cy + size}, + {cx - size,cy}, + {cx - size / 2,cy}, + }; + Polygon(hdc, pt, 7); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void arrowFactMini(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + arrow(hdc, cx, cy, size); + + count++; + char text[80]; + sprintf_s(text, "%d", count); + TextOutA(hdc, cx, cy, (LPCSTR)text, strlen(text)); + + arrowFactMini(hdc, cx - size / 2, cy - size, size / 2); + arrowFactMini(hdc, cx + size / 2, cy - size, size / 2); + arrowFactMini(hdc, cx + size, cy, size / 2); + arrowFactMini(hdc, cx, cy + size, size / 2); + arrowFactMini(hdc, cx - size, cy, size / 2); +} + +void arrowFactMaxi(HDC hdc, int cx, int cy, int size) { + if (size <= 10) return; + arrow(hdc, cx, cy, size); + + count++; + char text[80]; + sprintf_s(text, "%d", count); + TextOutA(hdc, cx, cy, (LPCSTR)text, strlen(text)); + + arrowFactMaxi(hdc, cx - size / 2, cy - size, size / 3); + arrowFactMaxi(hdc, cx + size / 2, cy - size, size / 3); + arrowFactMaxi(hdc, cx + size, cy, size / 3); + arrowFactMaxi(hdc, cx, cy + size, size / 3); + arrowFactMaxi(hdc, cx - size, cy, size / 3); +} + + + + + + + + + +// Глобальные переменные: +HINSTANCE hInst; // текущий экземпляр +WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка +WCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна + +// Отправить объявления функций, включенных в этот модуль кода: +ATOM MyRegisterClass(HINSTANCE hInstance); +BOOL InitInstance(HINSTANCE, int); +LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); +INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); + +int APIENTRY wWinMain(_In_ HINSTANCE hInstance, + _In_opt_ HINSTANCE hPrevInstance, + _In_ LPWSTR lpCmdLine, + _In_ int nCmdShow) +{ + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpCmdLine); + + // TODO: Разместите код здесь. + + // Инициализация глобальных строк + LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); + LoadStringW(hInstance, IDC_MY18, szWindowClass, MAX_LOADSTRING); + MyRegisterClass(hInstance); + + // Выполнить инициализацию приложения: + if (!InitInstance (hInstance, nCmdShow)) + { + return FALSE; + } + + HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY18)); + + MSG msg; + + // Цикл основного сообщения: + while (GetMessage(&msg, nullptr, 0, 0)) + { + if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + + return (int) msg.wParam; +} + + + +// +// ФУНКЦИЯ: MyRegisterClass() +// +// ЦЕЛЬ: Регистрирует класс окна. +// +ATOM MyRegisterClass(HINSTANCE hInstance) +{ + WNDCLASSEXW wcex; + + wcex.cbSize = sizeof(WNDCLASSEX); + + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = WndProc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = hInstance; + wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MY18)); + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_MY18); + wcex.lpszClassName = szWindowClass; + wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); + + return RegisterClassExW(&wcex); +} + +// +// ФУНКЦИЯ: InitInstance(HINSTANCE, int) +// +// ЦЕЛЬ: Сохраняет маркер экземпляра и создает главное окно +// +// КОММЕНТАРИИ: +// +// В этой функции маркер экземпляра сохраняется в глобальной переменной, а также +// создается и выводится главное окно программы. +// +BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) +{ + hInst = hInstance; // Сохранить маркер экземпляра в глобальной переменной + + HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); + + if (!hWnd) + { + return FALSE; + } + + ShowWindow(hWnd, nCmdShow); + UpdateWindow(hWnd); + + return TRUE; +} + +// +// ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM) +// +// ЦЕЛЬ: Обрабатывает сообщения в главном окне. +// +// WM_COMMAND - обработать меню приложения +// WM_PAINT - Отрисовка главного окна +// WM_DESTROY - отправить сообщение о выходе и вернуться +// +// +LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_COMMAND: + { + int wmId = LOWORD(wParam); + // Разобрать выбор в меню: + switch (wmId) + { + case IDM_ABOUT: + DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); + break; + case IDM_EXIT: + DestroyWindow(hWnd); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + } + break; + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hWnd, &ps); + + count = 0; + + switch (Action % 15) { + case 0: + triangleFact1(hdc, 200, 200, 100); + break; + case 1: + triangleFact2(hdc, 200, 200, 100); + break; + case 2: + triangleFact3(hdc, 200, 200, 100); + break; + case 3: + timeFact1(hdc, 200, 200, 100); + break; + case 4: + timeFact2(hdc, 200, 200, 100); + break; + case 5: + timeFact3(hdc, 200, 200, 100); + break; + case 6: + dimondFact1(hdc, 200, 200, 100); + break; + case 7: + dimondFact2(hdc, 200, 200, 100); + break; + case 8: + dimondFact3(hdc, 200, 200, 100); + break; + case 9: + dimondFact4(hdc, 200, 200, 100); + break; + case 10: + starFact1(hdc, 200, 200, 100); + break; + case 11: + starFact2(hdc, 200, 200, 100); + break; + case 12: + starFact3(hdc, 200, 200, 100); + break; + case 13: + arrowFactMini(hdc, 200, 200, 100); + break; + case 14: + arrowFactMaxi(hdc, 200, 200, 100); + break; + } + + EndPaint(hWnd, &ps); + } + break; + case WM_KEYDOWN: + Action ++; + InvalidateRect(hWnd, NULL, TRUE); + break; + case WM_DESTROY: + PostQuitMessage(0); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + return 0; +} + +// Обработчик сообщений для окна "О программе". +INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + UNREFERENCED_PARAMETER(lParam); + switch (message) + { + case WM_INITDIALOG: + return (INT_PTR)TRUE; + + case WM_COMMAND: + if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) + { + EndDialog(hDlg, LOWORD(wParam)); + return (INT_PTR)TRUE; + } + break; + } + return (INT_PTR)FALSE; +} diff --git a/18/18.h b/18/18.h new file mode 100644 index 0000000..b798bf5 --- /dev/null +++ b/18/18.h @@ -0,0 +1,3 @@ +#pragma once + +#include "resource.h" diff --git a/18/18.ico b/18/18.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3ec03bd617f32e58128fa977fd6ac9605124f4b GIT binary patch literal 46227 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 literal 0 HcmV?d00001 diff --git a/18/18.vcxproj b/18/18.vcxproj new file mode 100644 index 0000000..23ef448 --- /dev/null +++ b/18/18.vcxproj @@ -0,0 +1,148 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {4839da26-feba-494b-aa4a-af4a46c6ba51} + My18 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + true + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/18/18.vcxproj.filters b/18/18.vcxproj.filters new file mode 100644 index 0000000..dc147e1 --- /dev/null +++ b/18/18.vcxproj.filters @@ -0,0 +1,49 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + + + Исходные файлы + + + + + Файлы ресурсов + + + + + Файлы ресурсов + + + Файлы ресурсов + + + \ No newline at end of file diff --git a/18/Resource.h b/18/Resource.h new file mode 100644 index 0000000..1c650fd --- /dev/null +++ b/18/Resource.h @@ -0,0 +1,30 @@ +//{{NO_DEPENDENCIES}} +// Включаемый файл, созданный в Microsoft Visual C++. +// Используется 18.rc + +#define IDS_APP_TITLE 103 + +#define IDR_MAINFRAME 128 +#define IDD_MY18_DIALOG 102 +#define IDD_ABOUTBOX 103 +#define IDM_ABOUT 104 +#define IDM_EXIT 105 +#define IDI_MY18 107 +#define IDI_SMALL 108 +#define IDC_MY18 109 +#define IDC_MYICON 2 +#ifndef IDC_STATIC +#define IDC_STATIC -1 +#endif +// Следующие стандартные значения для новых объектов +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS + +#define _APS_NO_MFC 130 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/18/desktop.ini b/18/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/18/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/18/framework.h b/18/framework.h new file mode 100644 index 0000000..a8f6dc8 --- /dev/null +++ b/18/framework.h @@ -0,0 +1,15 @@ +// header.h: включаемый файл для стандартных системных включаемых файлов +// или включаемые файлы для конкретного проекта +// + +#pragma once + +#include "targetver.h" +#define WIN32_LEAN_AND_MEAN // Исключите редко используемые компоненты из заголовков Windows +// Файлы заголовков Windows +#include +// Файлы заголовков среды выполнения C +#include +#include +#include +#include diff --git a/18/small.ico b/18/small.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3ec03bd617f32e58128fa977fd6ac9605124f4b GIT binary patch literal 46227 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 diff --git a/19-20/19-20.vcxproj b/19-20/19-20.vcxproj new file mode 100644 index 0000000..dfba300 --- /dev/null +++ b/19-20/19-20.vcxproj @@ -0,0 +1,136 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {969ad85f-9a3b-4a45-b60c-147307ec5453} + My1920 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + \ No newline at end of file diff --git a/19-20/19-20.vcxproj.filters b/19-20/19-20.vcxproj.filters new file mode 100644 index 0000000..f6710ba --- /dev/null +++ b/19-20/19-20.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + Исходные файлы + + + \ No newline at end of file diff --git a/19-20/19.c b/19-20/19.c new file mode 100644 index 0000000..1118d14 --- /dev/null +++ b/19-20/19.c @@ -0,0 +1,204 @@ +#include +#include + +void srar(), Load(); +void Psrar(), PLoad(int); +void Psrar3(); +void Z4(); + +int arr[1000]; +int* parr; +int n; + +int main1() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + + Load(); + srar(); + + PLoad(0); + Psrar(); + free(parr); + + PLoad(1); + Psrar3(); + free(parr); + + PLoad(2); + Z4(); + free(parr); + + return 0; +} + +void Load() { + FILE* fin = fopen("D:\\university\\\\lab\\Temp\\19-20\\in1.txt", "rt"); + if (fin == NULL) { + printf(" \n"); + return; + } + + fscanf_s(fin, "%d", &n); + for (int i = 0; i < n; i++) { + fscanf_s(fin, "%d", &arr[i]); + } + + fclose(fin); +} + +void srar() { + float sa = 0; + float s = 0; + for (int i = 0; i < n; i++) { + s += arr[i]; + } + sa = s / n; + + + int m = 0; + for (int i = 0; i < n; i++) { + if (arr[i] > sa) { + m++; + } + } + + FILE* fout = fopen("D:\\university\\\\lab\\Temp\\19-20\\out\\out1.txt", "wt"); + if (fout == NULL) { + printf(" \n"); + return; + } + + fprintf(fout, "%d\n", m); + for (int i = 0; i < n; i++) { + if (arr[i] > sa) { + fprintf(fout, "%d ", arr[i]); + } + } + + fclose(fout); +} + +void PLoad(int action) { + FILE* fin = NULL; + if (action == 0) { + fopen_s(&fin, "D:\\university\\\\lab\\Temp\\19-20\\in2.txt", "rt"); + } + else if (action == 1) { + fopen_s(&fin, "D:\\university\\\\lab\\Temp\\19-20\\in3.txt", "rt"); + } + else if (action == 2) { + fopen_s(&fin, "D:\\university\\\\lab\\Temp\\19-20\\in4.txt", "rt"); + } + + if (fin == NULL) { + printf(" \n"); + return; + } + + fscanf_s(fin, "%d", &n); + parr = (int*)malloc(sizeof(int) * n); + + for (int i = 0; i < n; i++) { + fscanf_s(fin, "%d", &parr[i]); + } + + fclose(fin); +} + +void Psrar() { + float sa = 0; + float s = 0; + for (int i = 0; i < n; i++) { + s += parr[i]; + } + sa = s / n; + + int m = 0; + for (int i = 0; i < n; i++) { + if (parr[i] > sa) { + m++; + } + } + + FILE* fout = fopen("D:\\university\\\\lab\\Temp\\19-20\\out\\out2.txt", "wt"); + if (fout == NULL) { + printf(" \n"); + return; + } + + fprintf(fout, "%d\n", m); + for (int i = 0; i < n; i++) { + if (parr[i] > sa) { + fprintf(fout, "%d ", parr[i]); + } + } + + fclose(fout); +} + +void Psrar3() { + float sa = 0; + float s = 0; + for (int i = 0; i < n; i++) { + s += parr[i]; + } + sa = s / n; + + int m = 0; + for (int i = 0; i < n; i++) { + if (parr[i] < sa && parr[i] > 0) { + m++; + } + } + + FILE* fout = fopen("D:\\university\\\\lab\\Temp\\19-20\\out\\out3.txt", "wt"); + if (fout == NULL) { + printf(" \n"); + return; + } + + fprintf(fout, "%d\n", m); + for (int i = 0; i < n; i++) { + if (parr[i] < sa && parr[i] > 0) { + fprintf(fout, "%d ", parr[i]); + } + } + + fclose(fout); +} + +void Z4() { + float max = parr[0]; + for (int i = 1; i < n; i++) { + if (parr[i] > max) { + max = parr[i]; + } + } + + float more_then = max*2/3; + + int k = 0; + + for (int i = 0; i < n; i++) { + if (parr[i] >= more_then) { + k++; + } + } + + + FILE* fout = fopen("D:\\university\\\\lab\\Temp\\19-20\\out\\out4.txt", "wt"); + if (fout == NULL) { + printf(" \n"); + return; + } + + fprintf(fout, "%d\n", k); + for (int i = 0; i < n; i++) { + if (parr[i] >= more_then) { + fprintf(fout, "%d ", parr[i]); + } + } + + fclose(fout); +} \ No newline at end of file diff --git a/19-20/20.c b/19-20/20.c new file mode 100644 index 0000000..abfa538 --- /dev/null +++ b/19-20/20.c @@ -0,0 +1,169 @@ +#include +#include + +void printList(), clearList(), addToHead(int); +int deleteFromHead(), contains(int); + +void oddX10(), iX100(int), lessiX10(int); + + +typedef struct NODE { + int data; + struct NODE* next; +} Node; + +Node* arr = NULL; + +int main() { + arr = NULL; + printList(); + + addToHead(1); + printList(); + + addToHead(2); + printList(); + + addToHead(3); + printList(); + + addToHead(4); + addToHead(5); + printList(); + + printf("DELETE\n"); + deleteFromHead(); + printList(); + + int ans = 0; + + scanf_s("%d", &ans); + printf("contains %d %d\n\n", ans, contains(ans)); + + printf("summ = %d\n\n", sum()); + + printf("k%%2==0 = %d\n\n", evenCount()); + + printf("ODD X 10\n"); + oddX10(); + printList(); + + scanf_s("%d", &ans); + printf("a[%d] X 100\n", ans); + iX100(ans); + printList(); + + scanf_s("%d", &ans); + printf("less a[%d] X 10\n", ans); + lessiX10(ans); + printList(); + + clearList(); + printList(); +} + +void printList() { + Node* ptr = arr; + while (ptr != NULL) { + printf("(%d) -> ", ptr->data); + ptr = ptr->next; + } + printf("NULL\n\n"); +} + +void addToHead(int value) { + Node* newNode = (struct Node*)malloc(sizeof(Node)); + + newNode->next = arr; + newNode->data = value; + + arr = newNode; +} + +int deleteFromHead() { + int value = arr->data; + Node* delNode = arr; + arr = arr->next; + free(delNode); + return value; +} + +int contains(int value) { + Node* ptr = arr; + while (ptr != NULL) { + if (ptr->data == value) { + return 1; + } + ptr = ptr->next; + } + return 0; +} + +void clearList() { + while (arr != NULL) + { + Node* delNode = arr; + arr = arr->next; + free(delNode); + } +} + +int sum() { + Node* ptr = arr; + int s = 0; + while (ptr != NULL) { + s += ptr->data; + ptr = ptr->next; + } + return s; +} + +int evenCount() { + Node* ptr = arr; + int k = 0; + while (ptr != NULL) { + if (ptr->data % 2 == 0) { + k++; + } + ptr = ptr->next; + } + return k; +} + +void oddX10() { + Node* ptr = arr; + while (ptr != NULL) { + if (ptr->data % 2 != 0) { + ptr->data *= 10; + } + ptr = ptr->next; + } +} + +void iX100(int i) { + Node* ptr = arr; + int index = 0; + while (ptr != NULL) { + if (index == i) { + ptr->data *= 100; + return; + } + index += 1; + ptr = ptr->next; + } +} + +void lessiX10(int i) { + Node* ptr = arr; + int index = 0; + while (ptr != NULL) { + if (index < i) { + ptr->data = ptr->data * 10; + } + if (index == i) { + return; + } + index += 1; + ptr = ptr->next; + } +} \ No newline at end of file diff --git a/19-20/desktop.ini b/19-20/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/19-20/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/21-22/21-22.vcxproj b/21-22/21-22.vcxproj new file mode 100644 index 0000000..0a65565 --- /dev/null +++ b/21-22/21-22.vcxproj @@ -0,0 +1,136 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {5fa1270b-cd23-45e0-85b8-08b50975c2b9} + My2122 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + \ No newline at end of file diff --git a/21-22/21-22.vcxproj.filters b/21-22/21-22.vcxproj.filters new file mode 100644 index 0000000..aa9ee58 --- /dev/null +++ b/21-22/21-22.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + Исходные файлы + + + \ No newline at end of file diff --git a/21-22/21.c b/21-22/21.c new file mode 100644 index 0000000..84c1a20 --- /dev/null +++ b/21-22/21.c @@ -0,0 +1,110 @@ +#include "stdio.h" +#include "Windows.h" + +int isDigit(char); +char toUpperCase(char); + +int main1() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + + printf(" : "); + + char ch = ' '; + scanf_s("%c", &ch); + + + + printf(" 1\n"); + + for (int i = ch; i <= ch + 19; i++) { + printf("%c, %d\n", i, i); + } + + printf("\n 2\n"); + + for (int i = ch; i >= ch - 29; i--) { + printf("%c, %d\n", i, i); + } + + + + printf("\n 3\n"); + + char str[100]; + int k = 0; + scanf_s(" %[^\n]", &str, 100); + + printf("%s\n", str); + + for (int i = 0; i < strlen(str); i++) + if (str[i] == ' ') k++; + + printf(" = %d\n", k); + + + + printf("\n 4\n"); + + scanf_s(" %[^\n]", &str, 100); + + printf("%s\n", str); + + for (int i = 0; i < strlen(str); i++) + if (str[i] == ' ') str[i] = '#'; + + printf("%s\n", str); + + + + printf("\n 5\n"); + + scanf_s(" %[^\n]", &str, 100); + + printf("%s\n", str); + + for (int i = 0; i < strlen(str); i++) + if (isDigit(str[i])) str[i] = '$'; + + printf("%s\n", str); + + + + + printf("\n 6\n"); + + scanf_s(" %[^\n]", &str, 100); + + printf("%s\n", str); + + for (int i = 0; i < strlen(str); i++) + str[i] = toUpperCase(str[i]); + + printf("%s\n", str); + + + + printf("\n 9 8\n"); + + scanf_s(" %[^\n]", &str, 100); + + printf("%s\n", str); + + for (int i = 0; i < strlen(str); i++) + if(!(str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')) + str[i] = '_'; + + printf("%s\n", str); + + return 0; +} + +int isDigit(char c) { + return c > '0' && c <= '9'; +} + +char toUpperCase(char c) { + if (c >= 'a' && c <= 'z') return 'A' + (c - 'a'); + if (c == '') return ''; + return c; +} \ No newline at end of file diff --git a/21-22/22.c b/21-22/22.c new file mode 100644 index 0000000..f88f9a6 --- /dev/null +++ b/21-22/22.c @@ -0,0 +1,99 @@ +#include "stdio.h" +#include "string.h" +#include "Windows.h" + +int mystrlen(char[]), mystrlenpoint(char*); +int mystrcmp(char[], char[]), mystrcmppoint(char*, char*); +void mystrcpy(char*, char*); +void mystrcat(char*, char*); +void mystrcpyn(char*, char*, int); + +int main() { + char str[100]; + char str1[100]; + int n; + + printf("cpyn\n"); + scanf_s(" %[^\n]", &str1, 100); + scanf_s("%d", &n); + mystrcpyn(&str, &str1, n); + printf("1 = %s, 2 = %s\n", str, str1); + + printf("len\n"); + scanf_s(" %[^\n]", &str, 100); + printf("len = %d\n", mystrlen(str)); + + printf("len pointer\n"); + scanf_s(" %[^\n]", &str, 100); + printf("len pointer = %d\n", mystrlenpoint(&str)); + + printf("cmp\n"); + scanf_s(" %[^\n]", &str, 100); + scanf_s(" %[^\n]", &str1, 100); + printf("str - str1 = %d\n", mystrcmp(str, str1)); + + + printf("cmp pointer\n"); + scanf_s(" %[^\n]", &str, 100); + scanf_s(" %[^\n]", &str1, 100); + printf("str - str1 = %d\n", mystrcmppoint(&str, &str1)); + + printf("cpy\n"); + scanf_s(" %[^\n]", &str1, 100); + mystrcpy(str, str1); + printf("1 = %s, 2 = %s\n", str, str1); + + printf("cat\n"); + scanf_s(" %[^\n]", &str, 100); + scanf_s(" %[^\n]", &str1, 100); + mystrcat(str, str1); + printf("%s", str); + + + return 0; +} + +int mystrlen(char c[]) { + int k = 0; + for (int i = 0; c[i] != '\0'; i++) k++; + return k; +} + +int mystrlenpoint(char *c) { + char* p = c; + while (*p++); + return p - c - 1; +} + +int mystrcmp(char f[], char s[]) { + int i; + for (i = 0; f[i] != '\0' && s[i] != "\0"; i++) { + if (f[i] - s[i] != 0) break; + } + return f[i] - s[i]; +} + +int mystrcmppoint(char *f, char *s) { + int i; + for (i = 0; f[i] != '\0' && s[i] != "\0"; i++) { + if (f[i] - s[i] != 0) break; + } + return f[i] - s[i]; +} + +void mystrcpy(char *f, char *s) { + while (*f++ = *s++); +} + +void mystrcat(char* f, char* s) { + while (*f) *f++; + while (*f++ = *s++); +} + +void mystrcpyn(char* f, char* s, int n) { + int i = 0; + for (i = 0; s[i] != '\0' && i < n; i++) { + f[i] = s[i]; + } + f[i] = '\0'; +} \ No newline at end of file diff --git a/21-22/desktop.ini b/21-22/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/21-22/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/23-24/23-24.vcxproj b/23-24/23-24.vcxproj new file mode 100644 index 0000000..7dc0feb --- /dev/null +++ b/23-24/23-24.vcxproj @@ -0,0 +1,136 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {a1aa69ee-c137-4f84-ac0f-b33c2b861640} + My2324 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + \ No newline at end of file diff --git a/23-24/23-24.vcxproj.filters b/23-24/23-24.vcxproj.filters new file mode 100644 index 0000000..0c7eb29 --- /dev/null +++ b/23-24/23-24.vcxproj.filters @@ -0,0 +1,25 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + Исходные файлы + + + \ No newline at end of file diff --git a/23-24/23.c b/23-24/23.c new file mode 100644 index 0000000..d7031fb --- /dev/null +++ b/23-24/23.c @@ -0,0 +1,116 @@ +#include "stdio.h" +#include "Windows.h" + +#define MAX_LEN 80 +char s[MAX_LEN]; + +void Z1(), Z2(), Z4(); + +int main1() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + + Z1(); + Z2(); + Z4(); + + return 0; +} + +void Z1() { + FILE* fin; + fopen_s(&fin, "D:\\university\\\\lab\\Temp\\23-24\\in1.txt", "rt"); + if (fin == NULL) { + printf(" "); + return; + } + + FILE* fout; + fopen_s(&fout, "D:\\university\\\\lab\\Temp\\23-24\\out1.txt", "wt"); + if (fout == NULL) { + printf(" "); + return; + } + + while (!feof(fin)) { + if (fgets(s, MAX_LEN, fin) != NULL) { + for (int i = 0; s[i] != '\0'; i++) { + if (s[i] == '\t') { + s[i] = '%'; + } + } + fprintf(fout, "%s", s); + printf(">>%s<<\n", s); + } + } + + fclose(fin); + fclose(fout); +} + +char toUpperCase(char c) { + if (c >= 'a' && c <= 'z') return 'A' + (c - 'a'); + //printf(" %d = %c ", c, c); + if (c >= '' && c <= '') return '' + (c - ''); + if (c == '') return ''; + return c; +} + +void Z2() { + FILE* fin; + fopen_s(&fin, "D:\\university\\\\lab\\Temp\\23-24\\in2.txt", "rt"); + if (fin == NULL) { + printf(" "); + return; + } + + FILE* fout; + fopen_s(&fout, "D:\\university\\\\lab\\Temp\\23-24\\out2.txt", "wt"); + if (fout == NULL) { + printf(" "); + return; + } + + while (!feof(fin)) { + if (fgets(s, MAX_LEN, fin) != NULL) { + for (int i = 0; s[i] != '\0'; i++) { + s[i] = toUpperCase(s[i]); + } + fprintf(fout, "%s", s); + printf(">>%s<<\n", s); + } + } + + fclose(fin); + fclose(fout); +} + +void Z4() { + FILE* fin; + fopen_s(&fin, "D:\\university\\\\lab\\Temp\\23-24\\in4.txt", "rt"); + if (fin == NULL) { + printf(" "); + return; + } + + FILE* fout; + fopen_s(&fout, "D:\\university\\\\lab\\Temp\\23-24\\out4.txt", "wt"); + if (fout == NULL) { + printf(" "); + return; + } + + while (!feof(fin)) { + if (fgets(s, MAX_LEN, fin) != NULL) { + for (int i = 0; s[i] != '\0'; i++) { + if (!((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))) + s[i] = '_'; + } + fprintf(fout, "%s", s); + printf(">>%s<<\n", s); + } + } + + fclose(fin); + fclose(fout); +} \ No newline at end of file diff --git a/23-24/24.c b/23-24/24.c new file mode 100644 index 0000000..f792a14 --- /dev/null +++ b/23-24/24.c @@ -0,0 +1,110 @@ +#include "stdio.h" +#include "Windows.h" + +#define MAX_LEN 80 +char s[MAX_LEN]; + +void Z1html(), Z2html(); + +int main() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + + Z1html(); + Z2html(); + + return 0; +} + +void Z1html() { + FILE* fin; + fopen_s(&fin, "D:\\university\\\\lab\\Temp\\23-24\\in1html.txt", "rt"); + if (fin == NULL) { + printf(" "); + return; + } + + FILE* fout; + fopen_s(&fout, "D:\\university\\\\lab\\Temp\\23-24\\out1html.html", "wt"); + if (fout == NULL) { + printf(" "); + return; + } + + fprintf(fout, "HTML Document"); + + while (!feof(fin)) { + if (fgets(s, MAX_LEN, fin) != NULL) { + fprintf(fout, "%s
", s); + } + } + + fprintf(fout, ""); + + fclose(fin); + fclose(fout); +} + +void Z2html() { + FILE* fin; + fopen_s(&fin, "D:\\university\\\\lab\\Temp\\23-24\\in2html.txt", "rt"); + if (fin == NULL) { + printf(" "); + return; + } + + FILE* fout; + fopen_s(&fout, "D:\\university\\\\lab\\Temp\\23-24\\out2html.html", "wt"); + if (fout == NULL) { + printf(" "); + return; + } + + fprintf(fout, "HTML Document"); + + while (!feof(fin)) { + if (fgets(s, MAX_LEN, fin) != NULL) { + int bold = 0; + for (int i = 0; s[i] != '\0'; i++) { + if (s[i + 1] == '\0') break; + for (int j = i+1; s[j] != '\0'; j++) { + if (s[i] == s[j]) { + bold = 1; + break; + } + } + if (bold) break; + } + + + + int italic = 1; + for (int i = 0; s[i] != '\0'; i++) { + if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= '' && s[i] <= '')) + { + italic = 0; + break; + } + } + + if (bold && italic) { + fprintf(fout, "%s
", s); + continue; + } + if (bold) { + fprintf(fout, "%s
", s); + continue; + } + if (italic) { + fprintf(fout, "%s
", s); + continue; + } + fprintf(fout, "%s
", s); + } + } + + fprintf(fout, ""); + + fclose(fin); + fclose(fout); +} \ No newline at end of file diff --git a/23-24/desktop.ini b/23-24/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/23-24/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/910/910.vcxproj b/910/910.vcxproj new file mode 100644 index 0000000..5146a30 --- /dev/null +++ b/910/910.vcxproj @@ -0,0 +1,140 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {123e7787-05e1-478d-9cb1-f08abc0ab429} + My910 + 10.0 + 9-10 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/910/910.vcxproj.filters b/910/910.vcxproj.filters new file mode 100644 index 0000000..65e2b54 --- /dev/null +++ b/910/910.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + Исходные файлы + + + + + Файлы заголовков + + + \ No newline at end of file diff --git a/910/desktop.ini b/910/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/910/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/910/func.c b/910/func.c new file mode 100644 index 0000000..8446d7d --- /dev/null +++ b/910/func.c @@ -0,0 +1,181 @@ +#include "func.h" + +#ifdef Z1 + void ot1do10(), ot10do1(), ot1_5odd(), ot1do100_10(), ot1000do100_100(), ot1000do0(); + + void Menu() { + int n; + + do + { + printf(" :\n"); + printf("1) 1 10\n"); + printf("2) 10 1\n"); + printf("3) 5 1\n"); + printf("11) 10 10 100\n"); + printf("12) 10 1000 100\n"); + printf("20) 1000 0 \n\n"); + printf("99) \n"); + + scanf_s("%d", &n); + + switch (n) + { + case 1: + ot1do10(); + break; + case 2: + ot10do1(); + break; + case 3: + ot1_5odd(); + break; + case 11: + ot1do100_10(); + break; + case 12: + ot1000do100_100(); + break; + case 20: + ot1000do0(); + break; + } + + } while (n != 99); + } + + void twospace() { + printf("\n\n"); + } + + void ot1do10() { + int i = 1; + while (i <= 10) { + printf("%d ", i++); + } + twospace(); + } + + void ot10do1() { + int i = 10; + while (i >= 1) { + printf("%d ", i--); + } + twospace(); + } + + void ot1_5odd() { + int i = 0; + while (i <= 4) { + printf("%d ", 2 * i + 1); + i++; + } + twospace(); + } + + void ot1do100_10() { + int i = 1; + while (i <= 10) { + printf("%d ", i * 10); + i++; + } + twospace(); + } + + void ot1000do100_100() { + int i = 10; + while (i >= 1) { + printf("%d ", i * 100); + i--; + } + twospace(); + } + + void ot1000do0() { + int i = 1000; + int shag; + printf(" :"); + scanf_s("%d", &shag); + cycle: + printf("%d ", i); + i -= shag; + if (i > 0) goto cycle; + printf("%d", 0); + twospace(); + } +#endif + +#ifdef Z2 + void pif(), MN(), triangle(); + + void Menu() { + int n; + + do + { + printf(" :\n"); + printf("1) \n"); + printf("2) M N \n"); + printf("3) \n\n"); + printf("99) \n"); + + scanf_s("%d", &n); + + switch (n) + { + case 1: + pif(); + break; + case 2: + MN(); + break; + case 3: + triangle(); + break; + } + + } while (n != 99); + } + + void MN() { + int M = 0, N = 0; + printf(" M N\n"); + scanf_s("%d%d", &M, &N); + int i = 1; + while (i <= M) { + int j = 1; + while (j <= N) { + printf("%d%d ", i, j); + j++; + } + printf("\n\n"); + i++; + } + } + + void triangle() { + int i = 0; + do { + int j = 0; + while (j < i+1) { + printf("%d ", 5-j); + j++; + } + i++; + printf("\n"); + } while (i < 5); + } + + void pif() { + int i = 1; + while (i <= 10) { + int j = 1; + while (j <= 10) { + printf("%3d ", i * j); + j++; + } + printf("\n\n"); + i++; + } + } +#endif \ No newline at end of file diff --git a/910/func.h b/910/func.h new file mode 100644 index 0000000..6fe773f --- /dev/null +++ b/910/func.h @@ -0,0 +1,6 @@ +#pragma once +#include + +#define Z2 + +void Menu(); \ No newline at end of file diff --git a/910/lab.c b/910/lab.c new file mode 100644 index 0000000..3d52a80 --- /dev/null +++ b/910/lab.c @@ -0,0 +1,13 @@ +#include +#include +#include "func.h" + + +int main() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + + Menu(); + + return 0; +} \ No newline at end of file diff --git a/Temp/19-20/desktop.ini b/Temp/19-20/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/Temp/19-20/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/Temp/19-20/in1.txt b/Temp/19-20/in1.txt new file mode 100644 index 0000000..e1c2efe --- /dev/null +++ b/Temp/19-20/in1.txt @@ -0,0 +1,2 @@ +6 +3 2 4 2 2 5 diff --git a/Temp/19-20/in2.txt b/Temp/19-20/in2.txt new file mode 100644 index 0000000..08299d7 --- /dev/null +++ b/Temp/19-20/in2.txt @@ -0,0 +1,2 @@ +6 +3 2 4 2 2 5 \ No newline at end of file diff --git a/Temp/19-20/in3.txt b/Temp/19-20/in3.txt new file mode 100644 index 0000000..c581681 --- /dev/null +++ b/Temp/19-20/in3.txt @@ -0,0 +1,2 @@ +6 +-10 -5 -1 2 6 25 \ No newline at end of file diff --git a/Temp/19-20/in4.txt b/Temp/19-20/in4.txt new file mode 100644 index 0000000..8adcc0f --- /dev/null +++ b/Temp/19-20/in4.txt @@ -0,0 +1,2 @@ +8 +10000 20000 35000 20000 50000 60000 18000 45000 \ No newline at end of file diff --git a/Temp/23-24/desktop.ini b/Temp/23-24/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/Temp/23-24/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/Temp/23-24/in1.txt b/Temp/23-24/in1.txt new file mode 100644 index 0000000..7bddc36 --- /dev/null +++ b/Temp/23-24/in1.txt @@ -0,0 +1 @@ +asdasd assdasdasd asd \ No newline at end of file diff --git a/Temp/23-24/in1html.txt b/Temp/23-24/in1html.txt new file mode 100644 index 0000000..418fccd --- /dev/null +++ b/Temp/23-24/in1html.txt @@ -0,0 +1,17 @@ +asdasd assdasdasd asd +asd +asdasd +asdasd + + +asd + + + + + +asdasd + + + +asd \ No newline at end of file diff --git a/Temp/23-24/in2.txt b/Temp/23-24/in2.txt new file mode 100644 index 0000000..041886a --- /dev/null +++ b/Temp/23-24/in2.txt @@ -0,0 +1 @@ +asdфывASD123fh \ No newline at end of file diff --git a/Temp/23-24/in2html.txt b/Temp/23-24/in2html.txt new file mode 100644 index 0000000..a37e34f --- /dev/null +++ b/Temp/23-24/in2html.txt @@ -0,0 +1,5 @@ +aasd +ASD +AASD +aaaaaa +asdgasfgafsg \ No newline at end of file diff --git a/Temp/23-24/in4.txt b/Temp/23-24/in4.txt new file mode 100644 index 0000000..2dc64cd --- /dev/null +++ b/Temp/23-24/in4.txt @@ -0,0 +1 @@ +asd asd фывфвыа фыап 12312 2451 231235 \ No newline at end of file diff --git a/Temp/23-24/out1.txt b/Temp/23-24/out1.txt new file mode 100644 index 0000000..d070368 --- /dev/null +++ b/Temp/23-24/out1.txt @@ -0,0 +1 @@ +asdasd%assdasdasd%%%asd \ No newline at end of file diff --git a/Temp/23-24/out1html.html b/Temp/23-24/out1html.html new file mode 100644 index 0000000..3702d8f --- /dev/null +++ b/Temp/23-24/out1html.html @@ -0,0 +1,17 @@ +HTML Documentasdasd assdasdasd asd +
asd +
asdasd +
asdasd +
+
+
asd +
+
+
+
+
+
asdasd +
+
+
+
asd
\ No newline at end of file diff --git a/Temp/23-24/out2.txt b/Temp/23-24/out2.txt new file mode 100644 index 0000000..21dbeb6 --- /dev/null +++ b/Temp/23-24/out2.txt @@ -0,0 +1 @@ +ASDфывASD123FH \ No newline at end of file diff --git a/Temp/23-24/out2html.html b/Temp/23-24/out2html.html new file mode 100644 index 0000000..ab2a085 --- /dev/null +++ b/Temp/23-24/out2html.html @@ -0,0 +1,5 @@ +HTML Documentaasd +
ASD +
AASD +
aaaaaa +
asdgasfgafsg
\ No newline at end of file diff --git a/Temp/23-24/out4.txt b/Temp/23-24/out4.txt new file mode 100644 index 0000000..cc5d29f --- /dev/null +++ b/Temp/23-24/out4.txt @@ -0,0 +1 @@ +asd_asd____________________________________________ \ No newline at end of file diff --git a/Temp/desktop.ini b/Temp/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/Temp/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/Temp/game.bin b/Temp/game.bin new file mode 100644 index 0000000000000000000000000000000000000000..926ef0b0b08c078fa79767c4e56f15e37f2da70c GIT binary patch literal 2416 zcmb1RU|wijeR45NDympHmQYV+x3FU%egJrDq9FB6jG$ZRBGsxgtx r$Hk_aWl)1a_TaF78{B)e#BFUWjkjAS)j99fJOY;-@u+(Qeykj;eIgKj^v8d|bp t_A((^g3Lw|rWzC3d|Yg*Sq3!-WDh<}ZTm*e8x4Wc5Eu=C(Gb8M0sz%90DAxc literal 0 HcmV?d00001 diff --git a/Temp/test.txt b/Temp/test.txt new file mode 100644 index 0000000..14a3599 --- /dev/null +++ b/Temp/test.txt @@ -0,0 +1,4 @@ +3 3 +1 2 3 +4 5 6 +7 8 9 diff --git a/additional_materials/L13-14/Z1.png b/additional_materials/L13-14/Z1.png new file mode 100644 index 0000000000000000000000000000000000000000..0faac531438d3f3497f7f70b981394eafed44187 GIT binary patch literal 11897 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 Nk-j;iK=(@I{{YVc57qzx literal 0 HcmV?d00001 diff --git a/additional_materials/L13-14/Z2.png b/additional_materials/L13-14/Z2.png new file mode 100644 index 0000000000000000000000000000000000000000..f11507619738d75f162198cbb87879d19e8c50c5 GIT binary patch literal 13389 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 literal 0 HcmV?d00001 diff --git a/additional_materials/L13-14/desktop.ini b/additional_materials/L13-14/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/additional_materials/L13-14/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/additional_materials/L18/Z5.png b/additional_materials/L18/Z5.png new file mode 100644 index 0000000000000000000000000000000000000000..669a90eb3548be14b746dfaf169ce26efc45f685 GIT binary patch literal 30395 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 literal 0 HcmV?d00001 diff --git a/additional_materials/L18/desktop.ini b/additional_materials/L18/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/additional_materials/L18/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/additional_materials/L3/L3Z2.png b/additional_materials/L3/L3Z2.png new file mode 100644 index 0000000000000000000000000000000000000000..b175fc870e45972880740616e15587ad6b7d71e7 GIT binary patch literal 18826 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 literal 0 HcmV?d00001 diff --git a/additional_materials/L3/L3Z3.png b/additional_materials/L3/L3Z3.png new file mode 100644 index 0000000000000000000000000000000000000000..cb4709ad1a14640c6ffb5bcae497ebc24ce6803a GIT binary patch literal 21786 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 BQZWDk literal 0 HcmV?d00001 diff --git a/additional_materials/L3/L3Z5.png b/additional_materials/L3/L3Z5.png new file mode 100644 index 0000000000000000000000000000000000000000..53e3fe26685b6d7b91e30f5225a3bc663af59cc8 GIT binary patch literal 34978 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 literal 0 HcmV?d00001 diff --git a/additional_materials/L3/L3Z6.png b/additional_materials/L3/L3Z6.png new file mode 100644 index 0000000000000000000000000000000000000000..b11877226d4fd03769f5bceb80661ed6188fec58 GIT binary patch literal 29559 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 cZC~TbhpLG?(TddKDSnhAt!HH2& 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 EA5pO4X8-^I literal 0 HcmV?d00001 diff --git a/additional_materials/L4/L4Z4.png b/additional_materials/L4/L4Z4.png new file mode 100644 index 0000000000000000000000000000000000000000..3618fb843f13ecc0fd1af2bfdff586fc5d06bf74 GIT binary patch literal 9063 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 literal 0 HcmV?d00001 diff --git a/additional_materials/L4/L4Z6.png b/additional_materials/L4/L4Z6.png new file mode 100644 index 0000000000000000000000000000000000000000..7adba32c66991fda096d22a71361bd533cf2ee9c GIT binary patch literal 30941 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 literal 0 HcmV?d00001 diff --git a/additional_materials/L4/L4Z7.png b/additional_materials/L4/L4Z7.png new file mode 100644 index 0000000000000000000000000000000000000000..9baf7ea6786b9b6e7cf5d77ab54d2649a3c01271 GIT binary patch literal 17804 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 literal 0 HcmV?d00001 diff --git a/additional_materials/L4/desktop.ini b/additional_materials/L4/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/additional_materials/L4/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/additional_materials/L7/L7Z1.png b/additional_materials/L7/L7Z1.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c43aee741757bc341e108b6446bf590a804828 GIT binary patch literal 19984 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 literal 0 HcmV?d00001 diff --git a/additional_materials/L7/desktop.ini b/additional_materials/L7/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/additional_materials/L7/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/additional_materials/L8/L8Z5.png b/additional_materials/L8/L8Z5.png new file mode 100644 index 0000000000000000000000000000000000000000..0372173847bb5cb779a453acfcd10890bd6abe0f GIT binary patch literal 17431 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 bw>YkkFXx#Ce+&2*9GJPWjZuw(595CUVJP5# literal 0 HcmV?d00001 diff --git a/additional_materials/L9/Z5.png b/additional_materials/L9/Z5.png new file mode 100644 index 0000000000000000000000000000000000000000..4f91c2aeb69d1f8149340f441e11e6e498ea1106 GIT binary patch literal 14448 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

  • {L%s%)L1ZQ@Smi#4tE+6zbP0R(V zD}7@06uFiFlH>@d+h-`jCN%OuECtq9iu^Q6yda=7X5<8Dx02mH`&@~QaLUrYk^A~^ z|4z$$iM%QXLho%!3*ca-v%xE}Z!Q^x&Ge);(~!H%6oYo-u-@~NHDMcy6A34r|MeW4 ze_jnmghzVgSoaN?wBCX?TuhCSaKT>BxHA4kZ zLEC<-pkmHRH4x=~50+rIV7|mGNZ1MH%VA+(#>%`{SXjcVtEx2Wk)e-hySlrrK#;S2 z9i+7W^aT+cBV;#_dQHZTep()|>P1CGMU}9HlKV@5&R+O68O;`TqO){OeSA?N=56hL z$T{(tZ0~K5VKyR^PHNg-s;^1AeR~gfwS9|b$K)9*_)ub29&U~wB*E@ID=qbyK5D2u zm7Va;M1W%hv^8h-Wqfva_Ltu-R&gENXaap=-y3(dku zlEs))>9aLvnB?WlmmB%RHl|{=P6TUU*q%Dme`F3_e@zSm(?5LUa|TI?270G(<=^MB zvec(?lFk0pRMzs21A#8a5y;M^_x1Csf1k@r^=TMm9=cm_|NiWntIV^j1BED9vzVkL zUlVzXR)v>PRuHu<&+)2`GW!Fhb7;QldC8RsvQn?^)BJ!Bw`Pj_Q)sJFxBF0o7ZTbX z&-&35hz<@@pT_OO^;IgTgw!G}C0xLN0t5yEvG&xScjfqe^`A@xhC_!AfgRyWI3pnW zR~HuC`}+EFYihXp_`a(*tMC&D1hC#^_s+}8UIrdQ8b63vx3;ztpVHHRw<&(1^=!}e zIM@c-bfp_(fPJ3d)D-rz0m-wUy$X?R6ZfMpC9)Iu4^^R9BUvkE& zsg8_}Ca01R$3gz_=b<6o_1pLube`ddpy{Lpy)>gw`_7dRd5&3LQPJ&!!+b7;7oZ>gO)eGbL0f!{bzsfP@L#It>5Yr(RFYuttY7qI32n%lBU7@HnDm zT3cH|fG?-YHC>>h!yQsqUM`g#NeBD95)ajwuobG+Zg$#@|H&@R+>N*L5YYJbk9n;I zMa_prkE0Flsb829v%$e}Szb+1OK+-si<6F06+$=Qtb9rw(heGAqh`PM8Wzn55&4kn zCmq@n{(bmNmGJYdQu7jTMndNr@^_HYk4Y0v^{PiFZJROs`%!BKSBa z@4SYN<9=c*gYE17t6r2}{NXz*XNLNg3wu?&A%mx3_trq>(f6I>LT`DZX;mM}YDDxn zK^+JkZ@Z7F%Yw|*j$9TsM>m&L1fxsT>DR}Etkypz-aO6YbTR3s<@SSe1W3jISY4NF zjP*~NS}%W5q@S_$W~LGhutq#p!e;fD5dCqbuh?|m$c6^x8Cx-#-A+&EcIb&3`6U0 zpQbiXc$rg(;cv>PPy1<|-Q2bTsdaAp1ks-5?S4lY^Tds;LRYlGhCLAFAVNK}K95 i`ZP@QOyJpH;c@+UEcL?gbAx{&gy>)lG|JKVsQ(33?8g`Y literal 0 HcmV?d00001 diff --git a/additional_materials/L9/Zpif.png b/additional_materials/L9/Zpif.png new file mode 100644 index 0000000000000000000000000000000000000000..427fdf99ea43207f70b1533ba66fa0989f10a23e GIT binary patch literal 18323 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 Gi~kpvVeG~L literal 0 HcmV?d00001 diff --git a/additional_materials/L9/desktop.ini b/additional_materials/L9/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/additional_materials/L9/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/additional_materials/L9/tracing MN.png b/additional_materials/L9/tracing MN.png new file mode 100644 index 0000000000000000000000000000000000000000..c41a0b47c6b6b06aef032dc742a2cad2555c125e GIT binary patch literal 17830 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 + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {84206dea-52a8-4fdc-88ae-19eab48f0d52} + lab + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/lab/lab.vcxproj.filters b/lab/lab.vcxproj.filters new file mode 100644 index 0000000..ee3ac9b --- /dev/null +++ b/lab/lab.vcxproj.filters @@ -0,0 +1,31 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + \ No newline at end of file diff --git a/lab/lab1.c b/lab/lab1.c new file mode 100644 index 0000000..223a2be --- /dev/null +++ b/lab/lab1.c @@ -0,0 +1,57 @@ +#include +#include + +void aboutMe() { + printf("\n\n\n"); + printf("-12\n"); + printf("24.09.2024\n"); + printf(" \n"); + printf(" 8\n\n"); +} + +int main1() { + setlocale(LC_ALL, "RU"); + + aboutMe(); + + //printf("Hello World!\n\n\n"); + + //printf(" \n"); + //printf("-12\n"); + //printf("04.09.2024\n\n"); + + //printf("04.09.2024\n"); + //printf("-12\n"); + //printf(" \n\n\n"); + + //printf(" \n"); + //printf("-12\n"); + //printf("04.09.2024\n\n"); + + //printf("04.09.2024\n"); + //printf("-12\n"); + //printf(" \n\n\n"); + + /*printf(" * \n"); + printf(" * * * \n"); + printf(" * * * \n"); + printf("* * * * * * *\n"); + printf(" * * * \n"); + printf(" * * * \n"); + printf(" / * \\ \n"); + printf(" // * \\\\ \n"); + printf(" /// * \\\\\\ \n"); + printf("__//// * \\\\\\\\__\n");*/ + + //printf(" *-----*\n"); + //printf(" / /|\n"); + //printf("*-----* |\n"); + //printf("| | |\n"); + //printf("| | |\n"); + //printf("| |/\n"); + //printf("*-----*\n"); + //printf("\n"); + //printf("\n"); + + return 0; +} \ No newline at end of file diff --git a/lab/lab2.c b/lab/lab2.c new file mode 100644 index 0000000..49c5833 --- /dev/null +++ b/lab/lab2.c @@ -0,0 +1,104 @@ +#include +#include +#define _USE_MATH_DEFINES +#include +#define g 9.8f + +void L2Z1(), L2Z2(), L2Z3(), L2Z4(), L2Z5(), L2Z6(), L2Z7(); + +int main2() { + system("chcp 1251"); + + //L2Z1(); + //L2Z2(); + //L2Z3(); + //L2Z4(); + //L2Z5(); + //L2Z6(); + L2Z7(); + + return 0; +} + +void L2Z1() { + float h = 12, t = sqrt(2 * h / g); + printf(" %.2f \n", t); +} + +void L2Z2() { + float h, t; + printf(" : "); + scanf_s("%f", &h); + t = sqrt(2 * h / g); + printf(" %.2f ", t); +} + +void L2Z3() { + float S; + int cost_per_meter; + printf(" .: "); + scanf_s("%f%d", &S, &cost_per_meter); + float price = S * cost_per_meter; + printf("%.2f", price); +} + +void L2Z4() { + float S, percent = 0.5; + int cost_per_meter, salary; + printf(" : "); + scanf_s("%f", &S); + printf(" 1 .: "); + scanf_s("%d", &cost_per_meter); + printf(" : "); + scanf_s("%d", &salary); + printf(" %f %d . %f\n", S, cost_per_meter, S * cost_per_meter); + float t = (S * cost_per_meter) / (salary * percent); + printf(" %d %1.2f ", salary, t); +} + +void L2Z5() { + float V, R, H; + printf(" \n"); + printf(" : "); + scanf_s("%f", &R); + printf(" : "); + scanf_s("%f", &H); + if (H > 2 * R) H = 2 * R; + V = M_PI * pow(H, 2) * (R - H / 3); + printf("V = %.2f", V); +} + +void L2Z6() { + float V, a; + printf(" \n"); + printf(" : "); + scanf_s("%f", &V); + printf(" : "); + scanf_s("%f", &a); + float S = pow(V, 2) * sinf(2 * a * M_PI / 180) / g; + float H = pow(V * sinf(a * M_PI / 180), 2) / 2 / g; + printf("L = %.2f\n", S); + printf("H = %.2f\n\n", H); +} + +void L2Z7() { + float A, r; + int n; + char currency[4]; + + printf(" \n"); + + printf(" : "); + scanf_s("%f", &A); + printf(" : "); + scanf_s("%d", &n); + printf(" : "); + scanf_s("%f", &r); + printf(" : "); + scanf_s("%s", currency, 4); + + + float S = A + ((A + A / n) * r * n / 2 / 100); + + printf(" %.2f %s\n %.2f %s\n\n", S, currency, S - A, currency); +} \ No newline at end of file diff --git a/lab/lab3.c b/lab/lab3.c new file mode 100644 index 0000000..37f7bd4 --- /dev/null +++ b/lab/lab3.c @@ -0,0 +1,217 @@ +#include +#include + +void L3Z1(); +int L3Z2(); +char* L3Z3(); +int L3Z4(); +char* L3Z5(); +char* L3Z6(); +char* L3Z7(); + +int main3() { + setlocale(LC_ALL, "RU"); + + //L3Z1(); + //L3Z2(); + //L3Z3(); + //L3Z4(); + //L3Z5(); + //L3Z6(); + //L3Z7(); + + return 0; +} + +void L3Z1() { + float a, b; + printf(" : "); + scanf_s("%f", &a); + printf(" : "); + scanf_s("%f", &b); + if (a == b) { + printf(" "); + } + else { + float max, min; + + if (a > b) { + max = a; + min = b; + } + else { + max = b; + min = a; + } + printf(" = %f\n = %f", max, min); + } +} + +int L3Z2() { + int a, b, c; + printf(" 3 : "); + scanf_s("%d %d %d", &a, &b, &c); + + + int max = a; + if (b > max) { + max = b; + } + if (c > max) { + max = c; + } + + printf("max = %d", max); + return max; +} + +char* L3Z3() { + int temperature; + char* ans = ""; + printf(" : "); + scanf_s("%d", &temperature); + if (temperature >= 18 && temperature < 22) { + ans = ""; + } + else if (temperature >= 22 && temperature < 26) { + ans = ""; + } + else if (temperature >= 26) { + ans = ""; + } + + printf("%s", ans); + return ans; +} + +int L3Z4() { + int a[5]; + printf(" 5 : "); + for (int i = 0; i < 5; i++) { + scanf_s("%d", &a[i]); + } + + int max = a[0]; + for (int i = 1; i < 5; i++) { + if (a[i] > max) { + max = a[i]; + } + } + printf("%d", max); + return max; +} + +/* +tests: +input | output +1 | +2 | +3 | +4 | +*/ +char* L3Z5() { + char* ans = ""; + int season; + + printf(" \n"); + printf("1) \n"); + printf("2) \n"); + printf("3) \n"); + printf("4) \n"); + + scanf_s("%d", &season); + + while (!(1 <= season && season <= 4)) { + printf(" \n"); + printf("1) \n"); + printf("2) \n"); + printf("3) \n"); + printf("4) \n"); + scanf_s("%d", &season); + } + + if (season == 1) { + ans = ""; + } + else if (season == 2) { + ans = ""; + } + else if (season == 3) { + ans = ""; + } + else { + ans = ""; + } + + printf("%s", ans); + + return ans; + +} + +/* +tests: +input | output +1 | +264000 | +3567904 | +*/ +char* L3Z6() { + float price; + char* ans = ""; + printf(" = "); + scanf_s("%f", &price); + if (price <= 250000) { + ans = ""; + } + else if (price > 250000 && price <= 700000) { + ans = ""; + } + else if (price > 700000 && price <= 1000000) { + ans = ""; + } + else if (price > 1000000 && price <= 100000000) { + ans = " "; + } + printf("%s", ans); + + return ans; +} + +/* +tests: +input | output +1 | +123 | +735 | +9090 | +*/ +char* L3Z7() { + float ms; + char* ans = ""; + + printf(" = "); + scanf_s("%f", &ms); + + if (ms <= 1) { + ans = ""; + } + else if (ms > 1 && ms <= 2) { + ans = " "; + } + else if (ms > 2 && ms <= 100) { + ans = ""; + } + else if (ms > 100 && ms <= 1000) { + ans = ""; + } + else if (ms > 1000 && ms <= 5000) { + ans = ""; + } + else if (ms > 5000 && ms <= 10000) { + ans = " "; + } + printf("%s", ans); + + return ans; +} \ No newline at end of file diff --git a/lab/lab4.c b/lab/lab4.c new file mode 100644 index 0000000..75d023a --- /dev/null +++ b/lab/lab4.c @@ -0,0 +1,130 @@ +#include +#include +#include +#include + +void L4Z1(), L4Z2(), L4Z3(), L4Z4(), L4Z5(), L4Z6(), L4Z7(); + +int main4() { + setlocale(LC_ALL, "RU"); + + //L4Z1(); + //L4Z2(); + //L4Z3(); + //L4Z4(); + //L4Z4(); + //L4Z5(); + //L4Z6(); + //L4Z7(); + + + return 0; +} + +void L4Z1() { + int n, i = 1; + + printf("n = "); + scanf_s("%d", &n); + + do { + printf("%d ", i); + i++; + } while (i <= n); +} + +void L4Z2() { + int n, stepen = 1, i = 0; + printf("n = "); + scanf_s("%d", &n); + + do { + printf("%d^%d = %d\n", n, i, stepen); + stepen *= n; + i++; + } while (i <= 5); +} + +void L4Z3() { + float summa, percent; + int i = 0; + + printf("summa = "); + scanf_s("%f", &summa); + + printf("percent = "); + scanf_s("%f", &percent); + + do { + printf("%2d year summa = %10.0f\n", i, summa); + summa *= (percent / 100 + 1); + i++; + } while (i <= 10); +} + +void L4Z4() { + int n, i = 1; + scanf_s("%d", &n); + + do { + printf("%d ", 2 * i); + i++; + } while (i <= n); +} + +void L4Z5() { + int n, a, i = 1; + scanf_s("%d", &n); + scanf_s("%d", &a); + + do { + printf("%d ", a * i); + i++; + } while (i <= n); +} + +void L4Z6() { + int i = 2; + int n; + scanf_s("%d", &n); + + do { + bool ok = true; + int del = 2; + + while (del < ((int)sqrt(i)) + 1) { + if ((i % del) == 0) { + ok = false; + break; + } + del++; + } + + /*for (int del = 2; del < ((int)sqrt(i)) + 1; del++) { + if ((i % del) == 0) { + ok = false; + break; + } + }*/ + + if (ok) { + printf("%d ", i); + n--; + } + i++; + } while (n > 0); +} + +void L4Z7() { + int summ, transh, n; + float percent; + summ = 1000000, transh = 1000000, n = 3, percent = 18; + printf("summ, transh, n, percent"); + scanf_s("%d%d%d%f", &summ, &transh, &n, &percent); + do { + summ = summ * (percent / 100 + 1) - transh; + n--; + } while (n > 0); + + printf("%d", summ); +} \ No newline at end of file diff --git a/window/L8.cpp b/window/L8.cpp new file mode 100644 index 0000000..5d589f7 --- /dev/null +++ b/window/L8.cpp @@ -0,0 +1,194 @@ +#include "L8.h" + +#define SIN(x) sin(M_PI*x/180) +#define COS(x) cos(M_PI*x/180) +#define ATAN(y,x) atan2f(y,x)/M_PI*180 +#define LLL(x,y) sqrt(pow(x,2) + pow(y,2)) + +void L8_christmas_tree(HDC hdc, int x, int y) { + +}; + +void L8_logo(HDC hdc, int x, int y) { + SelectObject(hdc, GetStockObject(NULL_PEN)); + SelectObject(hdc, CreateSolidBrush(RGB(0, 0, 0))); + + Ellipse(hdc, x, y, x + 150, y + 150); + + SelectObject(hdc, GetStockObject(DC_BRUSH)); + Ellipse(hdc, x + 30, y + 30, x + 120, y + 120); + + SelectObject(hdc, CreateSolidBrush(RGB(1, 99, 171))); + Pie(hdc, x + 30, y + 30, x + 120, y + 120, x + 75, y, x, y + 75); + Pie(hdc, x + 30, y + 30, x + 120, y + 120, x + 75, y + 120, x + 120, y + 75); + + SelectObject(hdc, GetStockObject(DC_BRUSH)); + SelectObject(hdc, CreatePen(BS_SOLID, 3, RGB(255, 255, 255))); + POINT M[5]; + M[0] = { x + 75 - 10,y + 30 - 5 }; + M[1] = { x + 75 - 10,y + 5 }; + M[2] = { x + 75,y + 15 }; + M[3] = { x + 75 + 10,y + 5 }; + M[4] = { x + 75 + 10,y + 30 - 5 }; + + /*for (int i = 0; i < 5; i++) { + float L = sqrt(pow(x + 75 - M[i].x, 2) + pow(y + 75 - M[i].y, 2)); + float ang = (float)ATAN(y + 75 - M[i].y, x + 75 - M[i].x) + 35; + M[i].x = x + 75 + (float)L * COS(ang); + M[i].y = y + 75 - (float)L * SIN(ang); + }*/ + Polyline(hdc, M, 5); + + int ALPHA = 35; + + POINT W[5]; + W[0] = { x + 75 - 10,y + 5 }; + W[1] = { x + 75 - 10,y + 30 - 5 }; + W[2] = { x + 75,y + 15 }; + W[3] = { x + 75 + 10,y + 30 - 5 }; + W[4] = { x + 75 + 10,y + 5 }; + + for (int i = 0; i < 5; i++) { + float L = sqrt(pow(x + 75 - W[i].x, 2) + pow(y + 75 - W[i].y, 2)); + float ang = (float)ATAN(y + 75 - W[i].y, x + 75 - W[i].x) - ALPHA; + W[i].x = x + 75 + (float)L * COS(ang); + W[i].y = y + 75 - (float)L * SIN(ang); + } + + Polyline(hdc, W, 5); + + POINT B[2]; + B[0] = { x + 75 - 10,y + 5 }; + B[1] = { x + 75 - 10,y + 30 - 5 }; + + int xc = x + 75, yc = y + 75; + int shag = 5; + + POINT Bprev = B[0]; + + for (int i = 0; i < 180; i += shag) { + float x2, y2; + float L1, ang1, L2, ang2; + + L1 = LLL(Bprev.x - xc, Bprev.y - yc); + ang1 = ATAN((Bprev.y-yc), (Bprev.x-xc)) - ALPHA; + + //MoveToEx(hdc, Bprev.x, Bprev.y, NULL); + + + x2 = (float)B[0].x + 20 * SIN((i + shag)); + y2 = (float)B[0].y + 5 - 5 * COS((i + shag)); + + L2 = LLL((x2 - xc), (y2 - yc)); + ang2 = ATAN((y2-yc), (x2-xc)) - ALPHA; + Bprev.x = x2; + Bprev.y = y2; + + + //LineTo(hdc, Bprev.x, Bprev.y); + + MoveToEx(hdc, xc + L1 * COS(ang1), yc + L1 * SIN(ang1), NULL); + LineTo(hdc, xc + L2 * COS(ang2), yc + L2 * SIN(ang2)); + } + + for (int i = 0; i < 180; i += shag) { + float x2, y2; + float L1, ang1, L2, ang2; + + L1 = LLL(Bprev.x - xc, Bprev.y - yc); + ang1 = ATAN((Bprev.y - yc), (Bprev.x - xc)) - ALPHA; + + //MoveToEx(hdc, Bprev.x, Bprev.y, NULL); + + + x2 = (float)B[0].x + 20 * SIN((i + shag)); + y2 = (float)B[0].y + 15 - 5 * COS((i + shag)); + + L2 = LLL((x2 - xc), (y2 - yc)); + ang2 = ATAN((y2 - yc), (x2 - xc)) - ALPHA; + Bprev.x = x2; + Bprev.y = y2; + + + //LineTo(hdc, Bprev.x, Bprev.y); + + MoveToEx(hdc, xc + L1 * COS(ang1), yc + L1 * SIN(ang1), NULL); + LineTo(hdc, xc + L2 * COS(ang2), yc + L2 * SIN(ang2)); + } + + + for (int i = 0; i < 2; i++) { + float L = LLL((xc - B[i].x), (yc - B[i].y)); + float ang = (float)ATAN((B[i].y - yc), (B[i].x - xc)) - ALPHA; + B[i].x = xc + (float)L * COS(ang); + B[i].y = yc + (float)L * SIN(ang); + } + + MoveToEx(hdc, B[0].x, B[0].y, NULL); + LineTo(hdc, B[1].x, B[1].y); + + /*for (int i = 0; i <= 180; i += 5) { + MoveToEx(hdc, Bprev.x, Bprev.y, NULL); + POINT Bend = { B[0].x + 20 * SIN(i), B[0].y + 15 - 5 * COS(i) }; + LineTo(hdc, Bend.x, Bend.y); + Bprev = { Bend.x,Bend.y }; + }*/ +} + +void StClausAuto(HDC hdc, int x, int y) { + MoveToEx(hdc, x+20, y, NULL); + LineTo(hdc, x+30, y+20); + LineTo(hdc, x+10, y+20); + LineTo(hdc, x+20, y); + + MoveToEx(hdc, x+20, y+10, NULL); + LineTo(hdc, x+30, y+40); + LineTo(hdc, x+10, y+40); + LineTo(hdc, x+20, y+10); + + MoveToEx(hdc, x+20, y+30, NULL); + LineTo(hdc, x+40, y+80); + LineTo(hdc, x, y+80); + LineTo(hdc, x+20, y+30); +} + +void pattern1(HDC hdc, void (*f)(HDC, int, int)) { + f(hdc, 0, 0); + + f(hdc, 625, 0); + + f(hdc, 300, 300); + + f(hdc, 0, 600); + + f(hdc, 625, 600); +}; + +void pattern2(HDC hdc, void (*f)(HDC, int, int)) { + int x = 0; + + while (x <= 625) { + f(hdc, x, 0); + x += 200; + } +}; + +void pattern3(HDC hdc, void (*f)(HDC, int, int)) { + int y = 0; + + while (y <= 625) { + f(hdc, 0, y); + y += 200; + } +}; + +void pattern4(HDC hdc, void (*f)(HDC, int, int)) { + int y = 0; + int x = 0; + + while (y <= 625) { + f(hdc, x, y); + y += 200; + x += 200; + } +}; \ No newline at end of file diff --git a/window/L8.h b/window/L8.h new file mode 100644 index 0000000..38cd7b2 --- /dev/null +++ b/window/L8.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#define _USE_MATH_DEFINES +#include + +void L8_logo(HDC, int, int); +void pattern1(HDC, void (HDC, int, int)); +void pattern2(HDC, void (HDC, int, int)); +void pattern3(HDC, void (HDC, int, int)); +void pattern4(HDC, void (HDC, int, int)); +void StClausAuto(HDC, int, int); \ No newline at end of file diff --git a/window/Paint.cpp b/window/Paint.cpp new file mode 100644 index 0000000..4c66e3a --- /dev/null +++ b/window/Paint.cpp @@ -0,0 +1,506 @@ +#include "Paint.h" + +#define SIN(x) sin(M_PI*x/180) +#define COS(x) cos(M_PI*x/180) +#define ATAN(y,x) atan2f(y,x)/M_PI*180 + +void paint_figures(HDC hdc) { + int defaultxy = 20; + + int x1, y1; + int x2, y2; + + x1 = defaultxy, y1 = defaultxy; + x2 = defaultxy, y2 = defaultxy + 300; + + do { + MoveToEx(hdc, x1, y1, NULL); + LineTo(hdc, x2, y2); + y1 += 10; + x2 += 10; + } while (y1 <= defaultxy + 300); + + x1 = 2 * defaultxy + 300, y1 = defaultxy; + x2 = 2 * defaultxy + 300, y2 = defaultxy + 300; + + do { + MoveToEx(hdc, x1, y1, NULL); + LineTo(hdc, x2, y2); + x1 += 10; + x2 += 10; + y1 += 10; + y2 -= 10; + } while (x1 <= 2 * defaultxy + 2 * 300); + + + x1 = defaultxy, y1 = 2 * defaultxy + 300; + x2 = defaultxy, y2 = 2 * defaultxy + 2 * 300; + int r = 255, g = 0, b = 0; + int i = 1; + HPEN hPen; + + do { + hPen = CreatePen(PS_SOLID, 1, RGB(r, g, b)); + SelectObject(hdc, hPen); + MoveToEx(hdc, x1, y1, NULL); + LineTo(hdc, x2, y2); + DeleteObject(hPen); + x1 += 10; + x2 += 10; + y1 += 1; + y2 -= 1; + switch (i % 7) { + case 0: + r = 255, g = 0, b = 0; + break; + case 1: + r = 255, g = 165, b = 0; + break; + case 2: + r = 255, g = 255, b = 0; + break; + case 3: + r = 128, g = 255, b = 0; + break; + case 4: + r = 0, g = 191, b = 255; + break; + case 5: + r = 0, g = 0, b = 255; + break; + case 6: + r = 139, g = 0, b = 255; + break; + } + i++; + } while (x1 < defaultxy + 300); + + SelectObject(hdc, GetStockObject(DC_PEN)); + + x1 = 2 * defaultxy + 300, y1 = 2 * defaultxy + 300; + x2 = 2 * defaultxy + 300, y2 = 2 * defaultxy + 2 * 300; + + r = 255, g = 0, b = 0; + i = 1; + + do { + + hPen = CreatePen(PS_SOLID, 1, RGB(r, g, b)); + SelectObject(hdc, hPen); + MoveToEx(hdc, x1, y1, NULL); + LineTo(hdc, x2, y2); + DeleteObject(hPen); + + MoveToEx(hdc, x1, y1, NULL); + LineTo(hdc, x2, y2); + DeleteObject(hPen); + x2 += 10; + y1 += 10; + y2 -= 10; + + switch (i % 7) { + case 0: + r = 255, g = 0, b = 0; + break; + case 1: + r = 255, g = 165, b = 0; + break; + case 2: + r = 255, g = 255, b = 0; + break; + case 3: + r = 128, g = 255, b = 0; + break; + case 4: + r = 0, g = 191, b = 255; + break; + case 5: + r = 0, g = 0, b = 255; + break; + case 6: + r = 139, g = 0, b = 255; + break; + } + i++; + } while (y1 <= 2 * defaultxy + +2 * 300); + + SelectObject(hdc, GetStockObject(DC_BRUSH)); + SelectObject(hdc, GetStockObject(DC_PEN)); +} + +void house(HDC hdc, int xstart, int ystart) { + HPEN HPen; + + HPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 0)); + SelectObject(hdc, HPen); + POINT pt[5]; + pt[0] = { xstart + 150, ystart }; + pt[1] = { xstart + 300, ystart + 100 }; + pt[2] = { xstart + 300, ystart + 300 }; + pt[3] = { xstart, ystart + 300 }; + pt[4] = { xstart, ystart + 100 }; + Polygon(hdc, pt, 5); + + MoveToEx(hdc, pt[1].x, pt[1].y, NULL); + LineTo(hdc, pt[4].x, pt[4].y); + + Rectangle(hdc, pt[4].x + 75, pt[4].y + 50, pt[2].x - 75, pt[2].y - 50); + + MoveToEx(hdc, xstart + 150, ystart + 150, NULL); + LineTo(hdc, xstart + 150, ystart + 250); + + MoveToEx(hdc, xstart + 150, ystart + 200, NULL); + LineTo(hdc, xstart + 225, ystart + 200); + + DeleteObject(HPen); + SelectObject(hdc, GetStockObject(DC_PEN)); +} + +void oldhouse(HDC hdc) { + POINT pt[5]; + pt[0].x = 250; + pt[0].y = 100; + pt[1].x = 400; + pt[1].y = 200; + pt[2].x = 400; + pt[2].y = 400; + pt[3].x = 100; + pt[3].y = 400; + pt[4].x = 100; + pt[4].y = 200; + + MoveToEx(hdc, pt[0].x, pt[0].y, NULL); + for (int i = 1; i < 5; i++) { + LineTo(hdc, pt[i].x, pt[i].y); + } + LineTo(hdc, pt[0].x, pt[0].y); + + MoveToEx(hdc, pt[1].x, pt[1].y, NULL); + LineTo(hdc, pt[4].x, pt[4].y); + + int marginWindow = 56; + + marginWindow = marginWindow % ((pt[1].y - pt[2].y) / 2); + + POINT ptwindow[5]; + ptwindow[0].x = pt[1].x - marginWindow; + ptwindow[0].y = pt[1].y + marginWindow; + ptwindow[1].x = pt[2].x - marginWindow; + ptwindow[1].y = pt[2].y - marginWindow; + ptwindow[2].x = pt[3].x + marginWindow; + ptwindow[2].y = pt[3].y - marginWindow; + ptwindow[3].x = pt[4].x + marginWindow; + ptwindow[3].y = pt[4].y + marginWindow; + ptwindow[4].x = pt[1].x - marginWindow; + ptwindow[4].y = pt[1].y + marginWindow; + + Polyline(hdc, ptwindow, 5); + + int centerx = pt[4].x + (pt[1].x - pt[4].x) / 2; + int centery = pt[1].y + (pt[2].y - pt[1].y) / 2; + + MoveToEx(hdc, centerx, ptwindow[0].y, NULL); + LineTo(hdc, centerx, ptwindow[1].y); + + MoveToEx(hdc, centerx, centery, NULL); + LineTo(hdc, ptwindow[0].x, centery); +} + +void car(HDC hdc, int xstart, int ystart, COLORREF color) { + HBRUSH HBrush; + HBrush = CreateSolidBrush(color); + SelectObject(hdc, HBrush); + Rectangle(hdc, xstart, ystart + 50, xstart + 250, ystart + 100); + DeleteObject(HBrush); + SelectObject(hdc, GetStockObject(DC_BRUSH)); + + HBrush = CreateHatchBrush(HS_DIAGCROSS, RGB(0, 0, 0)); + SelectObject(hdc, HBrush); + Ellipse(hdc, xstart + 25, ystart + 75, xstart + 75, ystart + 125); + Ellipse(hdc, xstart + 175, ystart + 75, xstart + 225, ystart + 125); + DeleteObject(HBrush); + SelectObject(hdc, GetStockObject(DC_BRUSH)); + + POINT pt[4]; + pt[0] = { xstart + 50, ystart + 50 }; + pt[1] = { xstart + 100, ystart }; + pt[2] = { xstart + 200, ystart }; + pt[3] = { xstart + 250, ystart + 50 }; + Polyline(hdc, pt, 4); + + MoveToEx(hdc, pt[1].x, pt[1].y, NULL); + LineTo(hdc, pt[1].x, pt[1].y + 50); + + MoveToEx(hdc, pt[2].x, pt[2].y, NULL); + LineTo(hdc, pt[2].x, pt[2].y + 50); +} + +void carD(HDC hdc, int xstart, int ystart) { + car(hdc, xstart, ystart, RGB(0, 255, 255)); + +} + +void bush1(HDC hdc, int xstart, int ystart, COLORREF color) { + HPEN HPen; + HPen = CreatePen(PS_SOLID, 2, color); + SelectObject(hdc, HPen); + + POINT end = { xstart - 75,ystart - 75 }; + + while (end.x <= xstart + 75) { + MoveToEx(hdc, xstart, ystart, NULL); + LineTo(hdc, end.x, end.y); + end.x += 15; + } + + DeleteObject(HPen); + SelectObject(hdc, GetStockObject(DC_PEN)); +} + +void bush2(HDC hdc, int xstart, int ystart, COLORREF color) { + HPEN HPen; + HPen = CreatePen(PS_SOLID, 2, color); + SelectObject(hdc, HPen); + + POINT end = { -100,0 }; + + while (end.x <= 0) { + MoveToEx(hdc, xstart, ystart, NULL); + LineTo(hdc, xstart + end.x, ystart - end.y); + end.x += 10; + end.y += 20; + } + + end.x -= 10; + end.y -= 20; + + while (end.x <= 100) { + MoveToEx(hdc, xstart, ystart, NULL); + LineTo(hdc, xstart + end.x, ystart - end.y); + end.x += 10; + end.y -= 20; + } + + DeleteObject(HPen); + SelectObject(hdc, GetStockObject(DC_PEN)); + + DeleteObject(HPen); + SelectObject(hdc, GetStockObject(DC_PEN)); +} + +void christmasTree(HDC hdc, int xstart, int ystart) { + HBRUSH HBrush; + + HBrush = CreateSolidBrush(RGB(0, 255, 0)); + SelectObject(hdc, HBrush); + POINT pt[3]; + pt[0] = { xstart + 50, ystart }; + pt[1] = { xstart + 100, ystart + 50 }; + pt[2] = { xstart, ystart + 50 }; + + int diff = 50; + Polygon(hdc, pt, 3); + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 3; j++) { + pt[j].y += diff; + } + Polygon(hdc, pt, 3); + } + DeleteObject(HBrush); + + HBrush = CreateSolidBrush(RGB(88, 57, 39)); + SelectObject(hdc, HBrush); + Rectangle(hdc, pt[2].x + 37, pt[2].y, pt[1].x - 37, pt[1].y + 25); + DeleteObject(HBrush); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void tree(HDC hdc, int xstart, int ystart) { + HBRUSH HBrush; + + HBrush = CreateSolidBrush(RGB(88, 57, 39)); + SelectObject(hdc, HBrush); + Rectangle(hdc, xstart + 37, ystart + 115, xstart + 63, ystart + 200); + DeleteObject(HBrush); + + HBrush = CreateSolidBrush(RGB(0, 255, 0)); + SelectObject(hdc, HBrush); + Ellipse(hdc, xstart, ystart, xstart + 100, ystart + 125); + DeleteObject(HBrush); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void treeR(HDC hdc, int xstart, int ystart, int ang) { + HBRUSH HBrush; + + HBrush = CreateSolidBrush(RGB(88, 57, 39)); + SelectObject(hdc, HBrush); + POINT pt[4]; + pt[0] = { xstart, ystart }; + pt[1] = { (long)(xstart + (float)25 * COS(ang)), (long)(ystart + (float)25 * SIN(ang)) }; + pt[2] = { (long)(xstart + (float)25 * COS(ang) - (float)85 * SIN(ang)), (long)(ystart + (float)85 * COS(ang) + (float)25 * SIN(ang)) }; + pt[3] = { (long)(xstart - (float)85 * SIN(ang)), (long)(ystart + (float)85 * COS(ang)) }; + + Polygon(hdc, pt, 4); + DeleteObject(HBrush); + + DeleteObject(HBrush); + SelectObject(hdc, GetStockObject(DC_BRUSH)); +} + +void test(HDC hdc, int xcenter, int ycenter, int width, int heigth, int ang) { + + float R1 = (float)(width / 2), R2 = (float)(heigth / 2); + + float downX = (float)width * COS(ang) - (float)heigth * SIN(ang); + float downY = (float)heigth * COS(ang) + (float)width * SIN(ang); + + + POINT pt[4]; + pt[0] = { (long)(xcenter - downX / 2), (long)(ycenter - downY / 2) }; + pt[1] = { (long)(pt[0].x + (float)width * COS(ang)), (long)(pt[0].y + (float)width * SIN(ang)) }; + pt[2] = { (long)(pt[0].x + downX), (long)(pt[0].y + downY) }; + pt[3] = { (long)(pt[0].x - (float)heigth * SIN(ang)), (long)(pt[0].y + (float)heigth * COS(ang)) }; + + Polygon(hdc, pt, 4); + + float shag = 5; + + float i = 0; + + while (i < 360) { + float x1, y1, L1, ang1, x2, y2, L2, ang2, res; + + x1 = R1 + (float)(R1 * COS(i)); + y1 = R2 - (float)(R2 * SIN(i)); + #ifdef TEST + MoveToEx(hdc, (int)x1, (int)y1, NULL); + #endif + + + L1 = sqrt(pow(x1, 2) + pow(y1, 2)); + ang1 = ATAN(y1, x1); + res = (ang1 + ang); + x1 = xcenter + L1 * COS(res) - downX / 2; + y1 = ycenter + L1 * SIN(res) - downY / 2; + + i += shag; + + if (i > 360) i = 360; + + x2 = R1 + (float)(R1 * COS(i)); + y2 = R2 - (float)(R2 * SIN(i)); + #ifdef TEST + LineTo(hdc, (int)x2, (int)y2); + #endif + L2 = sqrt(pow(x2, 2) + pow(y2, 2)); + ang2 = ATAN(y2, x2); + res = (ang2 + ang); + x2 = xcenter + L2 * COS(res) - downX / 2; + y2 = ycenter + L2 * SIN(res) - downY / 2; + MoveToEx(hdc, (int)x1, (int)y1, NULL); + LineTo(hdc, (int)x2, (int)y2); + } + + MoveToEx(hdc, xcenter, ycenter + heigth, NULL); + LineTo(hdc, xcenter, ycenter - heigth); + + MoveToEx(hdc, xcenter + width, ycenter, NULL); + LineTo(hdc, xcenter - width, ycenter); +} + +void sun(HDC hdc, int xcenter, int ycenter) { + HBRUSH HBrush; + HPEN HPen; + + HBrush = CreateSolidBrush(RGB(255, 255, 0)); + HPen = CreatePen(PS_SOLID, 2, RGB(255, 255, 0)); + SelectObject(hdc, HBrush); + SelectObject(hdc, HPen); + Ellipse(hdc, xcenter - 50, ycenter - 50, xcenter + 50, ycenter + 50); + + + int margin = 60; + int length = 100; + int n = 14.88; + float shag = (float)90 / (n - 1); + + for (float i = 0; i < 360; i += shag) { + double alph = i / 180 * M_PI; + double S = sin(alph); + double C = cos(alph); + int ystart = margin * S, + yend = ystart + length * S, + xstart = margin * C, + xend = xstart + length * C; + + MoveToEx(hdc, xcenter - xstart, ycenter + ystart, NULL); + LineTo(hdc, xcenter - xend, ycenter + yend); + } + + // + + //margin = 360, length = 100; + + //for (double i = 0; i < 360; i += 10) { + // double alph = (double)i / 180 * M_PI; + // double S = sin(alph) / 4; + // double C = cos(alph) / 5; + // int ystart = margin * S, + // yend = ystart + length * 5 * S, + // xstart = margin * C, + // xend = (xstart + length * 4 * C); + + // MoveToEx(hdc, 400 - xstart, 400 + ystart, NULL); + // LineTo(hdc, 400 - xend, 400 + yend); + //} + + //margin = sqrt(60), length = 10; + + //for (double i = 0; i < 360; i += 10) { + // double alph = (double)i / 180 * M_PI; + // double S = sin(alph); + // double C = cos(alph); + // double ystart = margin * S * 5, + // yend = ystart + length * S * 5, + // xstart = margin * C * 4, + // xend = xstart + length * C * 4; + + // MoveToEx(hdc, 400 - (int)xstart, 400 + (int)ystart, NULL); + // LineTo(hdc, 400 - (int)xend, 400 + (int)yend); + //} + + //int R = 360; + + //for (double i = 0; i < 360; i += .1) { + // double alph = (double)i / 180 * M_PI; + // double S = sin(alph) / 4; + // double C = cos(alph) / 5; + + // double alph1 = (double)(i + 0.1) / 180 * M_PI; + // double S1 = sin(alph1) / 4; + // double C1 = cos(alph1) / 5; + + // int ystart = (R * S), + // yend = (R * S1), + // xstart = (R * C), + // xend = (R * C1); + + // MoveToEx(hdc, 400 - xstart, 400 + ystart, NULL); + // LineTo(hdc, 400 - xend, 400 + yend); + + // ystart = (R+500) * S, + // yend = (R+500) * S1, + // xstart = (R+400) * C, + // xend = (R+400) * C1; + + // MoveToEx(hdc, 400 - xstart, 400 + ystart, NULL); + // LineTo(hdc, 400 - xend, 400 + yend); + //} + + DeleteObject(HBrush); + DeleteObject(HPen); + + SelectObject(hdc, GetStockObject(DC_BRUSH)); + SelectObject(hdc, GetStockObject(DC_PEN)); +} \ No newline at end of file diff --git a/window/Paint.h b/window/Paint.h new file mode 100644 index 0000000..b6b6c53 --- /dev/null +++ b/window/Paint.h @@ -0,0 +1,18 @@ +#pragma once + +#include +#define _USE_MATH_DEFINES +#include + +void paint_figures(HDC hdc); +void house(HDC hdc, int xstart, int ystart); +void oldhouse(HDC hdc); +void car(HDC hdc, int xstart, int ystart, COLORREF color); +void carD(HDC hdc, int xstart, int ystar); +void bush1(HDC hdc, int xstart, int ystart, COLORREF color); +void bush2(HDC hdc, int xstart, int ystart, COLORREF color); +void christmasTree(HDC hdc, int xstart, int ystart); +void tree(HDC hdc, int xstart, int ystart); +void treeR(HDC hdc, int xstart, int ystart, int ang); +void test(HDC hdc, int xcenter, int ycenter, int width, int heigth, int ang); +void sun(HDC hdc, int xcenter, int ycenter); \ No newline at end of file diff --git a/window/desktop.ini b/window/desktop.ini new file mode 100644 index 0000000..7c48ef4 --- /dev/null +++ b/window/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\100.0.2.0\GoogleDriveFS.exe,26 diff --git a/window/framework.h b/window/framework.h new file mode 100644 index 0000000..a8f6dc8 --- /dev/null +++ b/window/framework.h @@ -0,0 +1,15 @@ +// header.h: включаемый файл для стандартных системных включаемых файлов +// или включаемые файлы для конкретного проекта +// + +#pragma once + +#include "targetver.h" +#define WIN32_LEAN_AND_MEAN // Исключите редко используемые компоненты из заголовков Windows +// Файлы заголовков Windows +#include +// Файлы заголовков среды выполнения C +#include +#include +#include +#include diff --git a/window/resource.h b/window/resource.h new file mode 100644 index 0000000..33f2cc3 --- /dev/null +++ b/window/resource.h @@ -0,0 +1,34 @@ +//{{NO_DEPENDENCIES}} +// Включаемый файл, созданный в Microsoft Visual C++. +// Используется window.rc +// +#define IDC_MYICON 2 +#define IDD_WINDOW_DIALOG 102 +#define IDS_APP_TITLE 103 +#define IDD_ABOUTBOX 103 +#define IDM_ABOUT 104 +#define IDM_EXIT 105 +#define IDI_WINDOW 107 +#define IDI_SMALL 108 +#define IDC_WINDOW 109 +#define IDR_MAINFRAME 128 +#define WRITE_HOME 32771 +#define ID_32772 32772 +#define CLEAR_WINDOW 32773 +#define CLEAR_WINDOW_MY 32774 +#define ID_32775 32775 +#define WRITE_FIGURE 32776 +#define ID_32777 32777 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32778 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/window/small.ico b/window/small.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3ec03bd617f32e58128fa977fd6ac9605124f4b GIT binary patch literal 46227 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 diff --git a/window/window.cpp b/window/window.cpp new file mode 100644 index 0000000..c3123b4 --- /dev/null +++ b/window/window.cpp @@ -0,0 +1,316 @@ +// window.cpp : Определяет точку входа для приложения. +// + +#include "framework.h" +#include "window.h" +#define _USE_MATH_DEFINES +//#define DEBUG_GAME +#include +#include + +//#define TEST +//#define FIRST + +#define SEVEN +#include "Paint.h" + +#include "L8.h" + + + +#define MAX_LOADSTRING 100 +#define Draw 1023 + +// Глобальные переменные: +HINSTANCE hInst; // текущий экземпляр +WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка +WCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна + +// Отправить объявления функций, включенных в этот модуль кода: +ATOM MyRegisterClass(HINSTANCE hInstance); +BOOL InitInstance(HINSTANCE, int); +LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); +INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); + +int sost = 1; +int MyX = 0, MyY = 0, MyAng = 0; + +int APIENTRY wWinMain(_In_ HINSTANCE hInstance, + _In_opt_ HINSTANCE hPrevInstance, + _In_ LPWSTR lpCmdLine, + _In_ int nCmdShow) +{ + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpCmdLine); + + // TODO: Разместите код здесь. + + // Инициализация глобальных строк + LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); + LoadStringW(hInstance, IDC_WINDOW, szWindowClass, MAX_LOADSTRING); + MyRegisterClass(hInstance); + + // Выполнить инициализацию приложения: + if (!InitInstance (hInstance, nCmdShow)) + { + return FALSE; + } + + HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOW)); + + MSG msg; + + // Цикл основного сообщения: + while (GetMessage(&msg, nullptr, 0, 0)) + { + if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + + return (int) msg.wParam; +} + + + +// +// ФУНКЦИЯ: MyRegisterClass() +// +// ЦЕЛЬ: Регистрирует класс окна. +// +ATOM MyRegisterClass(HINSTANCE hInstance) +{ + WNDCLASSEXW wcex; + + wcex.cbSize = sizeof(WNDCLASSEX); + + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = WndProc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = hInstance; + wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOW)); + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOW); + wcex.lpszClassName = szWindowClass; + wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); + + return RegisterClassExW(&wcex); +} + +// +// ФУНКЦИЯ: InitInstance(HINSTANCE, int) +// +// ЦЕЛЬ: Сохраняет маркер экземпляра и создает главное окно +// +// КОММЕНТАРИИ: +// +// В этой функции маркер экземпляра сохраняется в глобальной переменной, а также +// создается и выводится главное окно программы. +// +BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) +{ + hInst = hInstance; // Сохранить маркер экземпляра в глобальной переменной + + HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, + 20, 20, 800, 800, nullptr, nullptr, hInstance, nullptr); + + if (!hWnd) + { + return FALSE; + } + + ShowWindow(hWnd, nCmdShow); + UpdateWindow(hWnd); + + return TRUE; +} + + + +// +// ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM) +// +// ЦЕЛЬ: Обрабатывает сообщения в главном окне. +// +// WM_COMMAND - обработать меню приложения +// WM_PAINT - Отрисовка главного окна +// WM_DESTROY - отправить сообщение о выходе и вернуться +// +// +LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_COMMAND: + { + int wmId = LOWORD(wParam); + // Разобрать выбор в меню: + switch (wmId) + { + case WRITE_HOME: + sost = 1; + RedrawWindow(hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE); + break; + case WRITE_FIGURE: + sost = 2; + RedrawWindow(hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE); + break; + case CLEAR_WINDOW: + sost = 0; + RedrawWindow(hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE); + break; + case IDM_EXIT: + DestroyWindow(hWnd); + break; + //case Draw: + // sost = 1; + // RedrawWindow(hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE); + // break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + } + break; + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hWnd, &ps); + // TODO: Добавьте сюда любой код прорисовки, использующий HDC... + + //paint_figures(hdc); + + #ifdef FIRST + #ifndef SEVEN + if (abs(sost) % 3 == 1) { + house(hdc, 150, 75); + + car(hdc, 150, 445, RGB(0, 0, 255)); + car(hdc, 150, 600, RGB(0, 0, 0)); + christmasTree(hdc, 450, 350); + tree(hdc, 50, 350); + + bush1(hdc, 125, 125, RGB(0, 225, 0)); + bush2(hdc, 650, 650, RGB(127, 127, 127)); + + sun(hdc, 780, 0); + } + else if (abs(sost) % 3 == 2) { + paint_figures(hdc); + } + else { + //HWND Draw_BTN = CreateWindow(L"button", // Predefined class; Unicode assumed + // L"aSd", // Button text + // WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // Styles + // 10, // x position + // 10, // y position + // 100, // Button width + // 100, // Button height + // hWnd, // Parent window + // (HMENU) Draw, // No menu. + // NULL, + // NULL); + } + #endif + #ifdef SEVEN + switch (abs(sost)%7) { + case 0: + house(hdc, 150, 75); + break; + case 1: + car(hdc, 150, 445, RGB(0, 0, 255)); + break; + case 2: + christmasTree(hdc, 450, 350); + break; + case 3: + tree(hdc, 50, 350); + break; + case 4: + bush1(hdc, 125, 125, RGB(0, 225, 0)); + break; + case 5: + bush2(hdc, 650, 650, RGB(127, 127, 127)); + break; + case 6: + paint_figures(hdc); + break; + } + #endif + test(hdc, MyX + 400, MyY + 400, 50, 100, MyAng); + #endif + + + + #ifndef FIRST + void (*f)(HDC, int, int) = L8_logo; + switch (abs(sost) % 4){ + case 0: + pattern1(hdc, (*f)); + break; + case 1: + pattern2(hdc, (*f)); + break; + case 2: + pattern3(hdc, (*f)); + break; + case 3: + pattern4(hdc, (*f)); + break; + default: + break; + } + #endif + + + EndPaint(hWnd, &ps); + } + break; + case WM_CHAR: + switch (wParam) { + case 'a': + MyX -= 1; + break; + case 'd': + MyX += 1; + break; + case 'w': + MyY -= 1; + break; + case 's': + MyY += 1; + break; + case 'e': + MyAng += 1; + break; + case 'q': + MyAng -= 1; + break; + } + + InvalidateRect(hWnd, NULL, TRUE); + break; + case WM_KEYDOWN: + switch (wParam) { + case VK_RIGHT: + sost += 1; + break; + case VK_LEFT: + sost -= 1; + break; + default: + break; + } + RedrawWindow(hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE); + break; + case WM_DESTROY: + PostQuitMessage(0); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + return 0; +} diff --git a/window/window.h b/window/window.h new file mode 100644 index 0000000..b798bf5 --- /dev/null +++ b/window/window.h @@ -0,0 +1,3 @@ +#pragma once + +#include "resource.h" diff --git a/window/window.ico b/window/window.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3ec03bd617f32e58128fa977fd6ac9605124f4b GIT binary patch literal 46227 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 F=3mEaNKF6$ literal 0 HcmV?d00001 diff --git a/window/window.vcxproj b/window/window.vcxproj new file mode 100644 index 0000000..742da3d --- /dev/null +++ b/window/window.vcxproj @@ -0,0 +1,152 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {6df1e650-4412-4ce1-a5db-7d0a3c2eb2ec} + window + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + true + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/window/window.vcxproj.filters b/window/window.vcxproj.filters new file mode 100644 index 0000000..bbd116d --- /dev/null +++ b/window/window.vcxproj.filters @@ -0,0 +1,61 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + + + Файлы ресурсов + + + + + Файлы ресурсов + + + Файлы ресурсов + + + \ No newline at end of file