From 23bc0aaee9587e7e64120ec83002b73f5fc83933 Mon Sep 17 00:00:00 2001 From: 07092023 <07092023@DESKTOP-3OSERST> Date: Tue, 21 Nov 2023 12:56:20 +0100 Subject: [PATCH] Add project files. --- soustavy.cpp | 175 +++++++++++++++++++++++++++++++++++++++ soustavy.sln | 31 +++++++ soustavy.vcxproj | 135 ++++++++++++++++++++++++++++++ soustavy.vcxproj.filters | 22 +++++ 4 files changed, 363 insertions(+) create mode 100644 soustavy.cpp create mode 100644 soustavy.sln create mode 100644 soustavy.vcxproj create mode 100644 soustavy.vcxproj.filters diff --git a/soustavy.cpp b/soustavy.cpp new file mode 100644 index 0000000..8ea69f2 --- /dev/null +++ b/soustavy.cpp @@ -0,0 +1,175 @@ +// soustavy.cpp : This file contains the 'main' function. Program execution begins and ends there. +// + +#include +#include +#include + +static HANDLE s_console; + +#define COLOR_TEXT 0b0111 +#define COLOR_ZERO 0b1000 +#define COLOR_PIVOT_OK 0b1010 +#define COLOR_PIVOT_BAD 0b1100 +#define COLOR_OTHER 0b1111 +#define COLOR_BVEC 0b0111 + +void Color(WORD color) { + SetConsoleTextAttribute(s_console, color); +} + +class Matrix { + size_t m_m; + size_t m_n; + std::vector m_data; + +public: + Matrix(size_t m, size_t n) : m_m(m), m_n(n), m_data(m* n) {} + float& At(size_t i, size_t j) { return m_data[i * m_n + j]; } + void Print(const char* format) { + size_t min_pivot = 0; + for (size_t i = 0; i < m_m; ++i) { + size_t pivot = 0; + for (size_t j = 0; j < m_n; ++j) { + auto val = At(i, j); + WORD color = COLOR_OTHER; + + if (j == m_n - 1) { + color = COLOR_BVEC; + } + else if (std::abs(val) < 0.00001f) { + if (pivot == j) ++pivot; + color = COLOR_ZERO; + + } + else if (pivot == j) { + color = pivot >= min_pivot ? COLOR_PIVOT_OK : COLOR_PIVOT_BAD; + min_pivot = pivot + 1; + } + + if (j == m_n - 1) { + Color(COLOR_TEXT); + printf(" |"); + } + + Color(color); + printf(format, val); + } + printf("\n"); + } + Color(COLOR_TEXT); + } + +}; + +template +T Input(const char* prompt) { + std::cout << prompt << " = "; + T a; + std::cin >> a; + return a; +} + +int main() { + s_console = GetStdHandle(STD_OUTPUT_HANDLE); + Color(COLOR_TEXT); + + auto m = Input("m"); + auto n = Input("n"); + + std::vector history; + + { + Matrix mat(m, n); + + for (size_t i = 0; i < m; ++i) { + for (size_t j = 0; j < n; ++j) { + //mat.At(i, j) = 0.0f; + std::cin >> mat.At(i, j); + } + } + + history.push_back(mat); + } + + + printf("\nupravy:\n s ....... prohodit radky i1 a i2\n m ......... vynasobit radek i konstantou k\n a ... pricist k-nasobek i1 k i2\n f ........ zmenit format vystupu\n u ................. undo\n"); + + std::string fmt("%4.0f"); + while (true) { + history.push_back(history.back()); + auto& mat = history.back(); + + printf("\n"); + mat.Print(fmt.c_str()); + printf("\n? "); + + char op; + size_t i1, i2; + float k, temp; + + + std::cin >> op; + switch (op) { + case 's': { + std::cin >> i1 >> i2; + --i1; --i2; + for (size_t j = 0; j < n; ++j) { + temp = mat.At(i1, j); + mat.At(i1, j) = mat.At(i2, j); + mat.At(i2, j) = temp; + } + break; + } + case 'm': { + std::cin >> i1 >> k; + --i1; + for (size_t j = 0; j < n; ++j) + mat.At(i1, j) *= k; + break; + } + case 'a': { + std::cin >> k >> i1 >> i2; + --i1; --i2; + for (size_t j = 0; j < n; ++j) + mat.At(i2, j) += mat.At(i1, j) * k; + break; + } + case 'f': + std::cin >> fmt; + break; + + case 'u': + if (history.size() > 2) { + history.pop_back(); + history.pop_back(); + } + break; + + default: + break; + } + + + } + + + + + //printf("m(%u) n(%u)\n", m, n); + + + + std::cout << "Hello World!\n"; +} + +// Run program: Ctrl + F5 or Debug > Start Without Debugging menu +// Debug program: F5 or Debug > Start Debugging menu + +// Tips for Getting Started: +// 1. Use the Solution Explorer window to add/manage files +// 2. Use the Team Explorer window to connect to source control +// 3. Use the Output window to see build output and other messages +// 4. Use the Error List window to view errors +// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project +// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file diff --git a/soustavy.sln b/soustavy.sln new file mode 100644 index 0000000..aef5f42 --- /dev/null +++ b/soustavy.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34031.279 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "soustavy", "soustavy.vcxproj", "{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Debug|x64.ActiveCfg = Debug|x64 + {00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Debug|x64.Build.0 = Debug|x64 + {00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Debug|x86.ActiveCfg = Debug|Win32 + {00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Debug|x86.Build.0 = Debug|Win32 + {00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Release|x64.ActiveCfg = Release|x64 + {00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Release|x64.Build.0 = Release|x64 + {00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Release|x86.ActiveCfg = Release|Win32 + {00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5161ABFE-D95A-41AA-AF42-33EBF8D1224E} + EndGlobalSection +EndGlobal diff --git a/soustavy.vcxproj b/soustavy.vcxproj new file mode 100644 index 0000000..b5430e0 --- /dev/null +++ b/soustavy.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {00ad13be-eef1-47a4-96ed-ebf98c966eb3} + soustavy + 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/soustavy.vcxproj.filters b/soustavy.vcxproj.filters new file mode 100644 index 0000000..a784cee --- /dev/null +++ b/soustavy.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 + + + + + Source Files + + + \ No newline at end of file